STM32的串口发送数据小结
STM32的串口发送数据
1.1、初始化要调用的串口的相关参数 :
- Instance 要调用的串口的串口寄存器的基地址。
- BaudRate 波特率
- StopBits 的停止位
- WordLength 字节的长度
- HwFlowCtl 硬件流,一般情况下,设置无、
- Mode 设置串口是发送还是接收数据,或者是发送,接收同时进行的。
- Parity 设置串口的奇偶校验位
以上这些串口的参数都是放在UART_HandleTypeDef这个结构体中,所以,需要定义一个UART_HandleTypeDef的变量。UART_HandleTypeDef usart1_handler
1.2使能要调用的串口,HAL_UART_Init()这个函数的入口参数是UART_HandleTypeDef的一个指针变量,所以,调用这个函数的时候,直接HAL_UART_Init(&usart1_handler)就可以了。
为了不再main中进行初始化,可以自己定义一个函数进行初始化就可以了。
void usart1_init()
//需要对串口初始化的相关参数,和串口的使能开启。
void usart1_init() { //需要对串口初始化的相关参数,和串口的使能开启。 }
到时候在main函数中调用即可。’
int main() { usart1_init(); //这样调用的话,在看主函数的时候,就会很精简。 }
2.1串口分位,RX,TX,最终需要接到IO口的引脚上,所以,需要对相关的IO脚进行配置,还有复用配置
相关函数是HAL_UART_MspInit ,这是一个虚函数,需要重新定义。然而,对IO脚配置的函数是在HAL_GPIO_Init()函数中的、
void HAL_UART_MspInit(UART_HandleTypeDef *huart) {
GPIO_InitTypeDef GPIO_Initure; // HAL_GPIO_Init 进行调用即可
// HAL_UART_MspInit这个函数是要被HAL_UART_Init进行调用的
}
3.1发送数据,并等待数据的发送完成
int main(void) { u8 rdates[]="125488xaaaff123"; //这个是要发送的内容 HAL_Init(); Stm32_Clock_Init(360,25,2,8); delay_init(180); //这个延时函数的初始化没有配置的话,主函数及时有延时函数也是没有任何作用的,所以,洗浴是要配置的 usart1_init(); while(1) { HAL_UART_Transmit(&usart1_handler,rdates,sizeof(rdates),1000); delay_ms(1000); } }