現在,遇到了串口調試的問題。
串口傳輸有兩種方案:1)中斷函數接收完完整的frame之后用二值信號量觸發阻塞的解析數據進程;2)新建隊列,中斷中將接收的數據send到隊列,解析進程讀隊列http://huangchuanlong.blog.163.com/blog/static/14709020201332775731105/ 。
但是在中斷里發送隊列這種行為想想都覺得危險,實時性再好、主頻再高也經不起這么折騰。在同事小文的建議下,我果斷讓串口收完一幀數據包后才觸發事件。但不知道為什么,我用freeRTOS時不時會遇到串口的第一byte沒有讀到的問題,另外第一次xSemaphoreTake()的時候總是可以讀到東西,難道默認就是有二值信號量的??
下圖應該是眾Jrs們經常遇到的問題,也是動不動就跪求大神的問題:exception.
我遇到的幾次HardFault_Handler的情況是:數組越界,堆棧溢出,任務不是一個死循環,任務還沒創建,信號量還沒創建。 還是比較好解決的。至於跟蹤匯編代碼、SP/PC指針之類的事,我還不會,跪求大神解答。
此外,硬件上有個小現象:usb->232是0~5V的電平;3.3ttl->max3232則是±5.5V左右,似乎接在一起也可以兼容。