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); } }