stm32 對GPIO口操作後 暫存器復位情況

2021-07-04 08:16:27 字數 582 閱讀 4786

今天在除錯程式的時候遇到的問題:

1.中斷處理函式

外部中斷函式初始化,執行的時候會進入死迴圈;查原因發現終端處理函式沒有寫;導致進入中斷之後標誌沒有清除,出不來。

2.拉高io口後,所有暫存器全部復位;

由於pd9正好是電源控制口,所以當我拉高的時候,stm32外接的晶元會產生乙個外部中斷,在此之前pd8腳已經配置成了輸入模式,用於外部中斷;而且外部中斷處理函式新增;

現象:拉高pd9 ,gpiox_crh=gpiox_crl=0x44444444; 後來檢視rcc暫存器,發現apb2下面的所有io口的時鐘都復位了,rcc_apb2rstr復位為0;所以判斷時鐘都沒有了;

最終查到在中斷處理函式裡面呼叫的是乙個函式指標;但是函式沒有實體,指向的是null;

於是在程式裡面新增判斷if(函式指標)  ,如下:

static void (*pcallbackservice)( void );

void *****isr( void )

int  pintinit( void (*pisr)( void ) )

其中:if(pcallbackservice) 判斷是否有實體函式去執行。

stm32學習1之GPIO口

ps 使用的32型號是.stm32f407zgt 原本我是不打算繼續更32的,但是最近的做的一些東西需要用到arm。所以想想就複習一下32吧!畢竟當初學的也確實不咋地。32系列我不會用很官方的話來講,我會用自己的理解最粗暴直白的表達出來。有什麼錯誤歡迎指正,企鵝 918619587 首先我們解釋一下...

STM32學習 GPIO的操作

1.應專案要求,要迅速熟悉stm32的gpio 串列埠以及tim高階定時器 輸出pwm 2.初步了解stm32學習方法以及程式設計要領 瘋狂地賦值貼上庫函式,學會看庫函式的函式介紹以及引數選擇,注意現在 件裡看函式宣告,再goto到相應的函式處 一 gpio的初始化過程 主要用來點亮led void...

STM32入門 區別ORD,BSRR,BRR暫存器

ord,bsrr,brr暫存器的作用是對已經初始化後的 io 口輸出高 低電平。odr暫存器可讀可寫,32位,既能控制管腳為高電平,也能控制管腳為低電平。gpio管腳對於位寫1為高電平,寫 0 為低電平。低 16 位用於設定 gpio 口對應位輸出高 低電平。高 16 位保留位址,讀寫無效。bsrr...