STM32使用cubeMAX可以快速建立工程模板,但是默認(rèn)使用的是Hal庫構(gòu)成的工程,對于習(xí)慣使用了ST標(biāo)準(zhǔn)庫的同學(xué)來說,靈活調(diào)用HAL庫可能會比較生疏,我也是這么覺得的,但是還是要逐步去接觸學(xué)習(xí)它,畢竟這個hal庫的封裝還是相當(dāng)好的,有好多先進(jìn)的思想和用法。
在學(xué)習(xí)過程中,我遇到了一個問題,之前也遇到過,但是沒時間去研究,就是串口在CUBUMAX上配置好后,如何實現(xiàn)串口中斷接收,接下來就來記錄一下我學(xué)習(xí)到的知識:
1.定位串口中斷發(fā)生的地方
HAL庫的中斷處理還是和標(biāo)準(zhǔn)庫一樣的,在stm32xxxx_it.c中定義我們定位到如下函數(shù):
HAL_UART_IRQHandler(&huart1);
再往下定位,我們找到
/* UART in mode Receiver ---------------------------------------------------*/
if((tmp_flag != RESET) && (tmp_it_source != RESET))
{
UART_Receive_IT(huart);
}
最后在UART_Receive_IT()函數(shù)中能找到串口中斷接收的回調(diào)函數(shù)HAL_UART_RxCpltCallback(huart);
往里面搜索,發(fā)現(xiàn)這個回調(diào)函數(shù)是這樣的:
/**
* @brief Rx Transfer completed callbacks.
* @param huart: Pointer to a UART_HandleTypeDef structure that contains
* the configuration information for the specified UART module.
* @retval None
*/
__weak void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
/* Prevent unused argument(s) compilation warning */
UNUSED(huart);
/* NOTE: This function should not be modified, when the callback is needed,
the HAL_UART_RxCpltCallback can be implemented in the user file
*/
}
你會發(fā)現(xiàn)這個回調(diào)函數(shù)啥也沒干;后面我搜索資料知道,這個函數(shù)需要用戶自己重寫的,這個比較關(guān)鍵;
2.處理串口中斷接收的流程是:
(1)初始化串口
(2)在main中第一次調(diào)用接收中斷函數(shù)(這個也是比較關(guān)鍵的)
(3)重寫HAL_UART_RxCpltCallback回調(diào),在回調(diào)中處理接收的數(shù)據(jù),重點是回調(diào)函數(shù)中也要調(diào)用一次HAL_UART_Receive_IT函數(shù)。
下面貼一下我的回調(diào)函數(shù)的代碼:
uint8_t aRxBuffer1;//一個字節(jié)的緩沖
int main(void)
{
...
HAL_UART_Receive_IT(&huart1,&aRxBuffer1,1); // Enable the USART1
...
while(1)
{
...
}
}
/* USER CODE BEGIN 4 */
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
if(huart->Instance == USART1)
{
HAL_UART_Receive_IT(&huart1,&aRxBuffer1,1);
// save char from uart receive
QueueIn(CLI_RX_Buff, aRxBuffer1);//將接收到的數(shù)據(jù)放到自己的fifo中去
//這里打印顯示,建議關(guān)閉,不然會影響中斷接收,可以考慮用中斷發(fā)送
//printf("%c",aRxBuffer1);
}
}
/* USER CODE END 4 */
這些就是所有需要添加的東西了,實現(xiàn)了串口中斷接收的功能。
至于如何cubeMAX中配置串口,可以參考如下鏈接,也非常感謝其他博主的詳細(xì)解釋。
參考鏈接:
http://weightgang.cn/mcu/article_2018061939840.html
https://www.cnblogs.com/wt88/p/9624115.html
上一篇:STM32串口中斷、DMA接收的幾點注意地方
下一篇:【STM32】HAL庫 STM32CubeMX教程十一---DMA (串口DMA發(fā)送接收)
推薦閱讀
史海拾趣
臺灣積體電路制造股份有限公司(TSMC)在CMOS技術(shù)的發(fā)展中也有著不可忽視的貢獻(xiàn)。作為一家專業(yè)的半導(dǎo)體制造企業(yè),TSMC憑借其在生產(chǎn)工藝和質(zhì)量控制方面的優(yōu)勢,成功地為全球眾多知名半導(dǎo)體企業(yè)提供了優(yōu)質(zhì)的CMOS芯片制造服務(wù)。通過不斷的技術(shù)創(chuàng)新和生產(chǎn)優(yōu)化,TSMC的CMOS芯片品質(zhì)得到了業(yè)界的廣泛認(rèn)可,使其在全球半導(dǎo)體制造市場上占據(jù)了重要地位。
CUI Inc.一直堅信,與客戶的緊密合作是其成功的關(guān)鍵。因此,公司始終致力于與客戶發(fā)展協(xié)作性伙伴關(guān)系。通過深入了解客戶的需求和反饋,CUI不斷優(yōu)化其產(chǎn)品和服務(wù),以滿足客戶的期望。這種以客戶為中心的經(jīng)營理念不僅贏得了客戶的忠誠和支持,還為CUI帶來了持續(xù)的業(yè)務(wù)增長和市場份額的擴(kuò)大。
這些故事只是CUI Inc.在電子行業(yè)中發(fā)展起來的一部分可能情況。實際上,CUI的發(fā)展可能涉及更多的戰(zhàn)略決策、市場變化和技術(shù)突破。如果需要更具體、詳細(xì)的故事,建議查閱相關(guān)的行業(yè)報告、公司年報或新聞資訊。
自1989年成立以來,CUI Inc.一直站在電源設(shè)計的前沿。公司不斷投資于研發(fā),致力于開發(fā)出更高效、更環(huán)保的電源產(chǎn)品。通過引入先進(jìn)的電源管理技術(shù)和創(chuàng)新的設(shè)計方法,CUI成功地幫助客戶提高了應(yīng)用的能效,減少了能源消耗。這種對電源技術(shù)的專注和創(chuàng)新,使CUI在競爭激烈的電子行業(yè)中脫穎而出,贏得了眾多客戶的信賴和好評。
隨著科技的不斷發(fā)展,Electech Electronics意識到僅僅依賴電子元器件的代理和銷售已經(jīng)無法滿足市場的需求。于是,公司開始投入研發(fā),專注于電子產(chǎn)品的設(shè)計和制造。經(jīng)過數(shù)年的努力,Electech Electronics成功開發(fā)出一系列具有競爭力的電子產(chǎn)品,如智能控制模塊、高精度傳感器等。這些產(chǎn)品的推出不僅拓寬了公司的產(chǎn)品線,也提升了公司的市場競爭力。
天二科技始終將產(chǎn)品質(zhì)量視為企業(yè)的生命線。為了不斷提升產(chǎn)品品質(zhì),公司引進(jìn)了先進(jìn)的自動化設(shè)備和生產(chǎn)工藝,并建立了嚴(yán)格的質(zhì)量控制體系。經(jīng)過多年的努力,天二科技的產(chǎn)品質(zhì)量得到了顯著提升,并先后通過了ISO9001、TS16949等多項國際質(zhì)量管理體系認(rèn)證。這些認(rèn)證的取得不僅證明了天二科技在產(chǎn)品品質(zhì)方面的卓越表現(xiàn),更為公司贏得了客戶的信任和市場的認(rèn)可。
面對數(shù)字化轉(zhuǎn)型的浪潮,DLG Hanbit公司積極擁抱變革。公司加大了對云計算、大數(shù)據(jù)、人工智能等技術(shù)的研發(fā)投入,推出了一系列智能電子產(chǎn)品和解決方案。同時,公司還加強(qiáng)了與互聯(lián)網(wǎng)企業(yè)、電信運營商等合作伙伴的合作,共同打造智能生態(tài)圈。未來,DLG Hanbit公司將繼續(xù)秉承創(chuàng)新、品質(zhì)、環(huán)保的理念,致力于成為全球領(lǐng)先的半導(dǎo)體設(shè)計和制造企業(yè)。
急問有關(guān)ADS中關(guān)于眼圖仿真的問題,希望大俠們不吝賜教! 我先在HFSS中建好單線和差分線的模型分別得到他們的S參數(shù)然后用ADS進(jìn)行時域暫態(tài)仿真,HFSS中的S參數(shù)差分比單線的要好,可是眼圖結(jié)果是差分比單線差,不知道什么原因?仿真眼圖設(shè)置中有什么需要注意的嘛?還有就是四端口是如何對應(yīng)到ADS中四端口模型 ...… 查看全部問答∨ |
Cadence Allegro PCB 設(shè)計詳細(xì)教程 我找了一點Cadence Allegro PCB 設(shè)計教程類的資料,發(fā)布在PCB塊了,下面是鏈接: https://bbs.eeworld.com.cn/viewthread.php?tid=89125&page=1&extra=page%3D1 1樓:Cadence Allegro 中文教程,又名:Cadence Allegro 中文簡易手冊 2樓:Alle ...… 查看全部問答∨ |
保存在這里。一共三卷,是一整個PDF。有興趣的同學(xué)也可以聯(lián)系我一起研究:Tianji.Fang#gmail.com 發(fā)郵件的時候記得把#換成@。本人做人厚道,分享東西堅持免費~… 查看全部問答∨ |
|
Tornado2.2中聯(lián)接tgrsvr不上,高分求解 裝了Tornado2.2,開始小試一把,結(jié)果在下載程序到目標(biāo)機(jī)啟動vxsim時提示,vxworks中聯(lián)接tgtsvr出問題的情況,如下: gtsvr (vxsim@chai-c1): Thu Apr 17 21:51:50 2008 Checking License ...OK Connecting to target ...… 查看全部問答∨ |
現(xiàn)跟幾個同學(xué)嘗試做一個汽車防撞系統(tǒng),請問大家知不知道一些性價比較高的微波發(fā)射接收器啊~~~ 還有那些設(shè)備的說明書網(wǎng)絡(luò)上好像都很少啊,可是如果想在買設(shè)備之前就像大致了解設(shè)備的用途,因為要跟單片機(jī)匹配,那該怎么辦呢? 我目前使用的單片機(jī) ...… 查看全部問答∨ |
如下 main.c:270 if(SMB_DATA_IN[0]!= ~SMB_DATA_IN[1]) 0x85ce CLRW X CLRW X 0x85cf  ...… 查看全部問答∨ |
MSP430F149共有三個振蕩器: (1)LF/XT1振蕩器,提供ACLK時鐘信號; (2)XT2振蕩器,提供MCLK時鐘信號; (3)片內(nèi)DCO振蕩器,提供SMCLK時鐘信號; 其中,能夠影響到振蕩器失效標(biāo)志OFIFG置位的有兩個: LF/XT1工作于HF模式時失效以及XT2振蕩器失效 ...… 查看全部問答∨ |
FIR濾波系數(shù)具有對稱性,利用MATLAB 設(shè)計工具,求得三階8位FIR濾波系數(shù) h(0)~h(4)={-1,3.75,3.75,-1} ---------------三階8位的FIR 直接型濾波器VHDL 源程序 --------------------------------- 定義自定庫: &n ...… 查看全部問答∨ |
設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦
- Microchip 升級數(shù)字信號控制器(DSC)產(chǎn)品線 推出PWM 分辨率和 ADC 速度業(yè)界領(lǐng)先的新器件
- 意法半導(dǎo)體STM32MP23x:突破成本限制的工業(yè)AI應(yīng)用核心
- 意法半導(dǎo)體推出用于匹配遠(yuǎn)距離無線微控制器STM32WL33的集成的匹配濾波芯片
- ESP32開發(fā)板連接TFT顯示屏ST7789跳坑記
- 如何讓ESP32支持analogWrite函數(shù)
- LGVL配合FreeType為可變字體設(shè)置字重-ESP32篇
- 使用樹莓派進(jìn)行 ESP32 Jtag 調(diào)試
- ESP32怎么在SPIFFS里面存儲html,css,js文件,以及網(wǎng)頁和arduino的通訊
- ESP32 freeRTOS使用測試
- ARXML 規(guī)則下 ECU 總線通訊與 ADTF 測試方案
- 日產(chǎn)在歐洲推出第三代e-POWER技術(shù)
- 福特CEO更看好Waymo激光雷達(dá)方案:比特斯拉純視覺自動駕駛路線可靠
- 智元機(jī)器人兩大核心產(chǎn)品啟動規(guī)模化生產(chǎn)
- 固態(tài)電池2026量產(chǎn)豪賭,真相還是泡沫?
- 100億元!湖北“下注”人形機(jī)器人產(chǎn)業(yè)
- 海外磷酸鐵鋰電池產(chǎn)能從0到1
- 基于多傳感器數(shù)據(jù)的自動駕駛仿真確定性驗證
- 國芯科技發(fā)布全球首款48V安全氣囊芯片,引領(lǐng)智能汽車新紀(jì)元
- 亞馬遜全球部署100萬臺機(jī)器人
- 有獎直播:借助Maxim的模擬技術(shù)優(yōu)化設(shè)計
- EEWORLD跨年芯幣競價——示波器、開發(fā)板、技術(shù)圖書等你拿
- 有獎直播報名:賽靈思和安富利專注嵌入式視覺應(yīng)用,助力人工智能和汽車輔助駕駛!
- 了解 PI 全新 PowiGaN 開關(guān)電源 IC ,答題贏好禮!
- 有獎技術(shù)直播:Keysight量子計算測量方案線上研討會
- 免費測評|涂鴉三明治Wi-Fi&BLE 開發(fā)板
- 【免費租用】Xilinx Spartan-6 FPGA 嵌入式套件!
- 羅姆有獎直播|從0到1,帶你了解電機(jī)及其驅(qū)動 開始報名啦~
- EEWORLD下載中心熱力上線!
- 小黑盒最快3秒打開智能門鎖?原理是什么
- 對話無人駕駛領(lǐng)導(dǎo)者M(jìn)obileye,護(hù)城河在哪里?
- 是什么卡住了國產(chǎn)CT的脖子
- 英特爾發(fā)起AI醫(yī)療調(diào)查:54%的懷疑者認(rèn)為AI將導(dǎo)致致命錯誤
- 東大與聯(lián)想研發(fā)發(fā)布“穿戴式智能心電衣”,年底前公測
- AMR行業(yè),工業(yè)移動機(jī)器人車隊到底比拼的是什么?
- 淺談MEMS傳感器的分類及應(yīng)用領(lǐng)域
- pm2.5傳感器四種工作原理及進(jìn)口品牌介紹
- 歐姆龍非接觸式溫度傳感器的圖文詳解
- STM32學(xué)習(xí)之路:I2C的基本讀寫