STM32串口與電腦收發通信,兩個不同電路板(外部時鐘和內部時鐘配置)485、232、CAN通信

1.芯片類型STM32L431VCTX  低功耗芯片

2.STM32CubeMX   HAL庫

3.串口通信UART3,關於串口中的使用,數據的發送接收這裏面利用的中斷接收(HAL_UART_Receive_TI(&huart3,miduart3.prxdata,200))和直接發送(HAL_UART_Transmit(&huart3,(unsigned char *)ptrdata,length,300)),在有關於串口收發不定長的字符時,可以串口接收通過中斷來實現,即當接收到數據時,產生中斷,程序轉去處理接收到的數據。接收數據用的中斷包括接收中斷(RXNE)和空閒中斷(IDLE)判斷接收完成,大家也可以去嘗試DMA接收發送

在有關串口接收的中斷中,Cube裏面生成HAL庫是直接利用接收中斷(RXNE)來進行配置的,代碼流程是先初始化串口函數和串口中斷函數,在進行串口接收中斷函數調用,有關HAL_UART_RxCpLtCallback()這個函數的調用,需要用戶自己去實現的部分就是重寫HAL_UART_RxCpltCallback這個函數,需要加載到HAL_UART_IRQHandler這個函數裏面,

4.自制電路板,一個有外部時鐘,一個無外部時鐘,實現利用串口UART3進行RS232、RS485通信,RS232、RS485有專門的電路圖可以利用,進行串口收發利用串口中斷來進行控制

5.在用低速內部時鐘的和用高速外部時鐘的進行CAN通信,應該切換成高速內部時鐘,CAN通信需要計算波特率,低速時鐘會導致計算波特率和利用高速時鐘的CAN通信不一致,導致CAN通信不成功。如果一開始都使用高速外部時鐘,沒有外部時鐘的那個電路板會自動切換內部低速時鐘,這是導致CAN通信不成功的主要原因。

6.在串口收發時,提前先判斷收到的數據長度是否爲0,不是0不執行,是0才執行程序,可以避免收到數據不正確或者亂碼的現象

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章