STM32F401串口2的异步发送

发布时间 2023-04-08 19:16:30作者: 汀洲杜若

本文使用Nucleo-F401RE这块板,目的是学习STM32平台上串口的使用方法。只描述如何操作寄存器以发送给定数据且不使用中断。接收数据的方法自行类比。

准备工作:

一、打开芯片的Datasheet。找到引脚功能映射表,选择要使用的串口对应的功能引脚。这里使用PA2和PA3的07号功能,即USART2-TX、RX。硬件流控和同步传输功能本文不涉及。查阅对应的GPIO和外设模块分别接在哪个总线上(我的GPIOA在AHB1,USART2在APB1)。

二、打开芯片的Reference Manual。略读RCC、GPIO和USART部分,熟悉哪部分内容分布在文档的哪个位置,以便查阅。

三、阅读板子的User Manual和原理图,确定板子上MCU的时钟输入方式和频率(我的板子上ST-LINK使用8兆赫晶振,信号经MCO引出至目标MCU)。

开始工作:

一、设定时钟来源为HSE(来自ST-LINK),AHB分频级别(我选AHB prescaler=2,此时HCLK频率变成4MHz)和外设所在总线的工作频率(我的APBx prescaler没设置,默认不分频)。注意:Reference Manual中的HSE部分已写明,如果没接晶振,而是引入外部时钟信号到输入引脚上,那么你要设置RCC寄存器中的HSE BYPASS。

二、设置GPIO对应引脚的功能号和端口速度。

三、设定你的异步传输配置:本文使用USART2、1位停止、9位数据(包括一位偶校验)、波特率2400BPS,16倍采样。根据这些预设值算出BaudRateRegister的(近似)值。

四、别忘了启用时钟和外设。