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才執行程序,可以避免收到數據不正確或者亂碼的現象