欢迎光临散文网 会员登陆 & 注册

STM32CUBEMX(8)--USART通过定时器中断方式接收不定长数据

2021-06-03 14:59 作者:记帖  | 我要投稿

    本文利用中断实现串口不定长接收(非DMA),使用HAL库,将接收的数据打印出去。

硬件准备

   首先需要准备一个开发板,这里我准备的是NUCLEO-F030R8的开发板。   

选择芯片型号

    使用STM32CUBEMX选择芯片stm32f030r8,如下所示:

配置时钟源

    HSE与LSE分别为外部高速时钟和低速时钟,在本文中使用内置的时钟源,故都选择Disable选项,如下所示:

配置时钟树

    STM32F0的最高主频到48M,所以配置48即可:

串口配置

本次实验使用的串口1进行串口通信,波特率配置为115200。

中断

GPIO配置

    板子上led为PA5端口,故设置PA5闪烁来验证是否正确。

定时器配置

    本次实验使用的是TIM3来进行计数。

    在上面配置TIM3参数,预分频系数设置为480-1, 自动重载值设置为10000-1,那么PWM频率为48,000,000/((480-1+1)*(10000-1+1))=10Hz,即 100ms一个周期。

生成工程设置

    注意在生产工程设置中不能出现中文,不然会报错。

代码生成设置

    最后设置生成独立的初始化文件。

生成代码

配置keil

代码

    在main.c中,先加入头文件。

    定义变量存储。

    定义printf的重定向函数fputc。

    打开串口和定时器。

    串口接受代码,当接受到最后数据为FF时候,直接打印,否则等待100ms打印。

演示效果

可以看到  发送11 12 13需要等待100ms左右才能发送,如果最后加上ff直接发送。

教学视频



STM32CUBEMX(8)--USART通过定时器中断方式接收不定长数据的评论 (共 条)

分享到微博请遵守国家法律