STMCU小助手
发布时间:2022-4-30 22:43
|
概述 本文利用中断实现串口不定长接收(非DMA),使用HAL库,将接收的数据打印出去。 硬件准备 首先需要准备一个开发板,这里我准备的是NUCLEO-F030R8的开发板:
选择芯片型号 使用STM32CUBEMX选择芯片stm32f030r8,如下所示:
配置时钟源 HSE与LSE分别为外部高速时钟和低速时钟,在本文中使用内置的时钟源,故都选择Disable选项,如下所示:
配置时钟树 STM32F0的最高主频到48M,所以配置48即可:
串口配置 本次实验使用的串口1进行串口通信,波特率配置为115200。
中断
GPIO配置 板子上led为PA5端口,故设置PA5闪烁来验证是否正确。
定时器配置 本次实验使用的是TIM3来进行计数。
PWM频率计算如下所示
在上面配置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直接发送。
|
经验分享 | USART接收的数据怎么错位啦?
经验分享 | 基于STM32H7 UART 空闲事件及DMA传输示例
经验分享 | STM32G4 UART+TIMER+DMA应用示例
经验分享 | STM32H563 UART+DMA 2D功能演示
经验分享 | 基于STM32H563演示UART+DMA功能
【STM32U3评测】实现双通道串口通信系统
STM32G系列RS485自动收发控制以及自适应波特率实战
【STM32H7S78-DK评测】CoreMark移植和优化--兼记printf重定向实现方法及常见问题
【STM32MP135-DK】裸机移植shell
NUCLEO-U545RE-Q评测】3. 串口基本收发测试
微信公众号
手机版