?? main.c
字號:
/****************************************************************************
* Copyright (C), 2010 安富萊電子 www.armfly.com
*
* 【本例程在安富萊STM32F103ZE-EK開發板上調試通過 】
* 【QQ: 1295744630, 旺旺:armfly, Email: armfly@qq.com 】
*
* 文件名: main.c
* 內容簡述: 本例程是一個簡單的手持雙蹤示波器(距離實用還有一定距離)
* PC0管腳采集通道1的波形,用了ADC1 和DMA1_1。
* PC1管腳采集通道2的波形,用了ADC3 和DMA2_5。
* 使用TIM1_CC2作為ADC1和ADC3的外部觸發源,TIM1頻率決定了ADC采樣頻率。
* 接線端子的DAC1的輸出頻率10KHz的正弦波??梢酝ㄟ^示波器探頭去探測。
*
* 操作提示:
* TAMPER鍵 = 切換通道焦點。CH1或CH2
* WAKEUP鍵 = 顯示幫助或退出幫助
* USER 鍵 = 暫?;驅崟r運行
* 搖桿上鍵 = 放大波形垂直幅度或向上移動
* 搖桿下鍵 = 縮小波形垂直幅度或向下移動
* 搖桿左鍵 = 水平展寬波形
* 搖桿右鍵 = 水平縮小波形
* 搖桿OK鍵 = 切換搖桿調節模式。幅度或位置
*
* 注意:在運行本例程前,需要先燒寫漢字庫到CPU內部Flash
* 字庫文件:XZKs1516.bin 字庫文件大小 :267,616 ,占用 1046個扇區
* 請使用J-LINK燒寫bin文件,地址填 :0x803EA00
*
* 文件歷史:
* 版本號 日期 作者 說明
* v0.1 2010-03-18 armfly 創建該文件
*
*/
#include "stm32f10x.h"
#include <stdio.h>
#include "usart_printf.h"
#include "systick.h"
#include "button.h"
#include "BackLight.h"
#include "tft_lcd.h"
#include "dso.h"
/*
#include "bmp.h"
#include "wave.h"
*/
#define EXAMPLE_NAME "TFT DSO Demo"
#define EXAMPLE_DATE "2010-03-16"
#define DEMO_COUNT 89 /* Demo界面個數 */
static void InitBoard(void);
static void DispLogo(void);
/*******************************************************************************
函數名:main
輸 入:
輸 出:
功能說明:用戶程序入口
*/
int main(void)
{
InitBoard(); /* 為了是main函數看起來更簡潔些,我們將初始化的代碼封裝到這個函數 */
DispLogo(); /* 顯示例程Logo */
DsoMain(); /* 進入DSO主程序 */
}
/*******************************************************************************
函數名:GPIO_Configuration
輸 入:
輸 出:
功能說明:配置7個按鍵為輸入口線,4個LED為輸出口線
按鍵口線分配:
USER鍵 : PG8 (低電平表示按下)
TAMPEER鍵 : PC13 (低電平表示按下)
WKUP鍵 : PA0 (!!!高電平表示按下)
搖桿UP鍵 : PG15 (低電平表示按下)
搖桿DOWN鍵 : PD3 (低電平表示按下)
搖桿LEFT鍵 : PG14 (低電平表示按下)
搖桿RIGHT鍵: PG13 (低電平表示按下)
搖桿SELECT鍵: PG7 (低電平表示按下)
LED口線分配:
LED1 : PF6 (輸出0點亮)
LED2 : PF7 (輸出0點亮)
LED3 : PF8 (輸出0點亮)
LED4 : PF9 (輸出0點亮)
*/
void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
/* 第1步:打開GPIOA GPIOC GPIOD GPIOF GPIOG的時鐘
注意:這個地方可以一次性全打開
*/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOC
| RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOF | RCC_APB2Periph_GPIOG,
ENABLE);
/* 第2步:配置所有的按鍵GPIO為浮動輸入模式(實際上CPUf復位后就是輸入狀態) */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure); /* PA0 */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
GPIO_Init(GPIOC, &GPIO_InitStructure); /* PC13 */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
GPIO_Init(GPIOD, &GPIO_InitStructure); /* PD3 */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_13
| GPIO_Pin_14 | GPIO_Pin_15;
GPIO_Init(GPIOG, &GPIO_InitStructure); /* PG7,8,13,14,15 */
/* 第3步:配置所有的LED指示燈GPIO為推挽輸出模式 */
/* 由于將GPIO設置為輸出時,GPIO輸出寄存器的值缺省是0,因此會驅動LED點亮
這是我不希望的,因此在改變GPIO為輸出前,先修改輸出寄存器的值為1 */
GPIO_SetBits(GPIOF, GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOF, &GPIO_InitStructure);
}
/*******************************************************************************
函數名:InitBoard
輸 入:
輸 出:
功能說明:初始化硬件設備
*/
static void InitBoard(void)
{
/*
這個函數是ST庫中的函數,函數實體在
Libraries\CMSIS\Core\CM3\system_stm32f10x.c
配置內部Flash接口,初始化PLL,配置系統頻率
系統時鐘缺省配置為72MHz,你如果需要更改,則需要去修改相關的頭文件中的宏定義
*/
SystemInit();
/* 配置按鍵GPIO和LED GPIO */
GPIO_Configuration();
/* 配置串口 */
USART_Configuration();
/* 在 SysTick_Config()前,必須先調用 */
InitButtonVar();
/* 配置systic作為1ms中斷,這個函數在
\Libraries\CMSIS\Core\CM3\core_cm3.h */
SysTick_Config(SystemFrequency / 1000);
/* 通過串口輸出例程名和更新日期 */
PrintfLogo(EXAMPLE_NAME, EXAMPLE_DATE);
}
/*******************************************************************************
函數名: DispLogo
輸 入:
輸 出:
功能說明:顯示例程Logo (通過串口打印到PC機的超級終端顯示)
*/
static void DispLogo(void)
{
/* 通過串口輸出例程名和更新日期 */
PrintfLogo(EXAMPLE_NAME, EXAMPLE_DATE);
}
#ifdef USE_FULL_ASSERT
/**
* @brief Reports the name of the source file and the source line number
* where the assert_param error has occurred.
* @param file: pointer to the source file name
* @param line: assert_param error line source number
* @retval None
*/
void assert_failed(uint8_t* file, uint32_t line)
{
/* User can add his own implementation to report the file name and line number,
ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
/* Infinite loop */
while (1)
{
}
}
#endif
/**
* @}
*/
/**
* @}
*/
/******************* (C) COPYRIGHT 2009 STMicroelectronics *****END OF FILE****/
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -