找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3213|回复: 0
收起左侧

stm32内部ADC采样和滤波例程

[复制链接]
ID:31327 发表于 2020-8-14 09:31 | 显示全部楼层 |阅读模式
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采样和滤波例程

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表