|
int main(void)
{
uint16_t usValue;
/*
由于ST固件库的启动文件已经执行了CPU系统时钟的初始化,所以不必再次重复配置系统时钟。
启动文件配置了CPU主时钟频率、内部Flash访问速度和可选的外部SRAM FSMC初始化。
系统时钟缺省配置为72MHz,如果需要更改,可以修改:
\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\system_stm32f10x.c
中配置系统时钟的宏。
*/
InitBoard(); /* 为了是main函数看起来更简洁些,我们将硬件初始化的代码封装到这个函数 */
PrintfLogo(); /* 打印例程Logo到串口1 */
printf("请调节开发板上的精密可调电阻,观察ADC采样值的变化\r\n");
ADC_Configuration(); /* 配置PC4 为ADC1_IN14 */
bsp_StartTimer(1, 300); /* 定时器0周期 200毫秒 */
/* 进入主程序循环体 */
while (1)
{
CPU_IDLE(); /* 这个宏在bsp_timer.h 中定义,目前定义为空。用户可以修改这个宏实现CPU休眠和喂狗 */
if (bsp_CheckTimer(1)) /* 定时到 */
{
bsp_StartTimer(1, 300); /* 启动下个定时周期 */
usValue = GetADC();
/* 注意: 末尾只有 \r回车, 没有\n换行,可以使PC超级终端界面稳定在1行显示 */
{
/* 超级终端界面上会显示一个不断旋转的字符
增加这个功能,是为了避免程序死机的假象,因为ADC采样值很稳定
*/
static uint8_t pos = 0;
if (pos == 0)
printf("|");
else if (pos == 1)
printf("/");
else if (pos == 2)
printf("-");
else if (pos == 3)
printf("\\"); /* 注意:这个特殊字符需要转义 */
if (++pos >= 4)
{
pos = 0;
}
printf(" PC4口线ADC采样值 = %5d , 电压 = %4dmV\r",
usValue, ((uint32_t)usValue * 3300) / 4095);
}
}
/* 这个地方可以插入 GetKey(), 扩充对按键的响应代码 */
}
}
|
-
-
ADC采样和滤波例程.7z
210.84 KB, 下载次数: 43, 下载积分: 黑币 -5
stm32 内部ADC采样和滤波例程
|