一、串列埠輸出列印重定向printf,**如下:
int fputc(int ch,file *f)
; hal_uart_transmit(&huart1,temp,1,1000);
return (ch);
}int fgetc(file *f)
用作程式除錯輸出時,可以使用一組巨集定義,方便開發完成後關閉printf;
/* 除錯日誌串列埠列印巨集定義 */
#define __debug__
#ifdef __debug__
#define debug(format,...) printf(format,##__va_args__)
//#define debug(format,...) printf("file:"__file__",line:%05d:"format"\n",__line__,##__va_args__)
#else
#define debug(format,...)
#endif
二、可接受任意位元組的串列埠通訊
首先在cube配置串列埠全域性中斷(global interrupt)
1、在cube生成的usart的hal_uart_mspinit()函式中開啟收到資料中斷(uart_it_rxne)及幀中斷(uart_it_idle)。
__hal_uart_enable_it(uarthandle, uart_it_rxne);
__hal_uart_enable_it(uarthandle, uart_it_idle);
2、在串列埠中斷函式usart1_irqhandler()中新增
if(reset != __hal_uart_get_flag(&huart1, uart_flag_rxne))
else if(reset != __hal_uart_get_flag(&huart1, uart_flag_idle))
3、在主程式中新增如下**即可完成接受任意位元組的資料
if(receivestate == 1)
暫時自己就用到了這兩個功能,以後用到別的再補充......
STM32 HAL庫學習筆記
1 系統時鐘 一般用stm32cube生成,使用者只需要會用stm32cube就行。2 gpio輸出void led gpio config void 3 gpio輸入void key gpio config void 4 外部中斷void exti key config void void ext...
STM32 HAL庫學習筆記
1 普通函式與 函式的區別 對普通函式的呼叫 呼叫程式發出對普通函式的呼叫後,程式執行立即轉向被呼叫函式執行,直到被呼叫函式執行完畢後,再返 用程式繼續執行。從發出呼叫的程式的角度看,這個過程為 呼叫 等待被呼叫函式執行完畢 繼續執行 對 函式呼叫 呼叫程式發出對 函式的呼叫後,不等函式執行完畢,立...
STM32 HAL庫 韌體庫 公升級
1 使用官方提供的新功能。2 上個版本有bug,下個版本bug解決了的情況是可能的。不過,上個版本沒bug,下個版本有bug的情況是有的 微小概率事件 開啟 stm32h7xx.h ctrl f搜尋 version 1 通過官網獲取最新hal庫 1 2keil官網經常會卡著顯示不了後續內容,這時可以...