STM32 串口发送配置流程
来源:互联网 发布:供应商数据分析 编辑:程序博客网 时间:2024/05/29 12:26
串口字节发送流程:
- 编程USARTx_CR1的M位来定义字长。
- 编程USARTx_CR2的STOP位来定义停止位位数。
- 编程USARTx_BRR寄存器确定波特率。
- 使能USARTx_CR1的UE位来使能USARTx。
- 如果进行多缓冲通信,配置USARTx_CR3的DMA使能(DMAT)。
- 使能USARTx_CR1的TE位使能发送器。
- 向发送数据寄存器TDR写入要发送的数据。
- 向TDR寄存器写入最后一个数据后,等待状态寄存器USARTx_ISR的TC位置1,传输完成。
配置步骤1-6 : 配置字长,停止位,奇偶校验位,波特率等:
HAL_StatusTypeDef HAL_USART_Init(USART_HandleTypeDef * huart);
该函数内部会引用标识符 HAL_USART_ENABLE使能相应串口。
例程如下:
void uart_init(u32 bound){ //UART初始化设置 UART1_Handler.Instance=USART1; //USART1 UART1_Handler.Init.BaudRate=bound; //波特率 UART1_Handler.Init.WordLength=UART_WORDLENGTH_8B; //字长位8位 UART1_Handler.Init.StopBits=UART_STOPBITS_1; //一位停止位 UART1_Handler.Init.Parity=UART_PARITY_NONE; //无奇偶校验位 UART1_Handler.Init.HwFlowCtl=UART_HWCONTROL_NONE; //无硬件流控 UART1_Handler.Init.Mode=UART_MODE_TX_RX; //收发模式 HAL_UART_Init(&UART1_Handler); //HAL_UART_Init()会使能UART1 HAL_UART_Receive_IT(&UART1_Handler, (u8 *)aRxBuffer, RXBUFFERSIZE);//该函数会开启接收中断;}
步骤7-8发送数据和等待发送完成
HAL_StatusTypeDef HAL_USART_Transmit(USART_HandleTypeDef * huart,uint8_t *pTxdata,uint16_t Size,uint32_t Timeout);
首先要提一下__weak关键字:
函数前面加__weak修饰符,我们称之为弱函数。对于弱函数,用户可以在用户文件中重新定义一个同名函数,最终编译器编译的时候会选择用户定义的函数。如果用户没有定义,那么函数的内容就是弱函数定义的内容。
__weak 关键字的好处:
1.对于事先定义好的一个流程,我们只希望修改流程中的某部分与用户相关的代码,这个时候我们可以采用弱函数定义一个空函数,然后让用户自行定义该函数。这样的好处是我们不会对既有程序流程做任何修改。
2.HAL库中大量使用__weak关键字修饰外设回调函数。
3.外设回调函数供用户编写MCU相关程序,大大提高程序的通用性,移植性。
串口句柄如下所示:
我们可以看到在串口句柄中存在一个串口参数初始化结构体,具体内容如下所示:
接下来描述串口发送程序的总体配置过程(HAL库):
1.初始化串口相关参数,使能串口:HAL_USRT_Init();
2.串口相关IO口的配置,复用配置:
在HAL_UART_MspInit中调用HAL_GPIO_Init();
3.发送数据并等待发送数据完成:
HAL_UART_Transmit();
- STM32 串口发送配置流程
- STM32 串口发送数据
- STM32串口发送
- STM32串口发送中断
- STM32串口发送问题
- STM32串口发送不正常
- STM32的串口1发送、接收DMA模式函数配置
- STM32 串口通讯 发送 接收
- Stm32串口发送字节数据
- Stm32串口发送字符串数据
- stm32串口-main实现发送
- STM32串口发送数据详解
- STM32的串口中断发送
- STM32串口接收发送子程序
- STM32串口1发送,串口2接收
- STM32 串口配置 注意事项
- stm32配置串口步骤
- STM32串口设定流程总结
- 大整数相加
- 合并排序的c++实现
- Xilinx Petalinux 开发环境搭建与安装
- Proto-Gen-Lua 环境搭建编译、安装、使用
- SOLIDWORKS PDM 2017 客户端激活问题
- STM32 串口发送配置流程
- xgboost参数详解
- mysql语句总结2
- 九种基本数据类型的大小,以及他们的封装类。
- Codeforces 839D Winter is here 组合数公式/容斥
- 学习SpringMVC——跟我学SpringMVC目录汇总贴、PDF下载、源码下载
- task20任务总结
- Qt QStringList的简单使用方法
- macOS Windows 和 WindowController 教程