STM32H7學習繼續(STM32H7系列7)含外設的編程一般流程
資料介紹
以<>為導引學習
SYSTEM 文件夾介紹
本章包括如下 3 個小結:
5.1,delay 文件夾代碼介紹;
5.2,sys 文件夾代碼介紹;
5.3,usart 文件夾代碼介紹;
delay文件
sys 文件夾
在 sys.h 里面除了函數申明外主要是定義了一
些常用數據類型短關鍵字。sys.c 里面除了定義時鐘系統配置函數 Stm32_Clock_Init 外主要是一
些匯編函數以及 Cache 相關操作函數,
USART文件夾
跑馬燈實驗和按鍵實驗(GPIO的輸入和輸出)
外設的編程一般流程
- 新建.C文件和.H文件(如led.c),保存在HARDWARE文件下新建子文件(如LED)
點擊三色品字圖標
.
把新建的HARDWARE文件和.c文件和.h文件添加- .h文件定義,.c文件配置,使能外設
- 外設:1)時鐘使能
2)IO口模式設置
3)其他設置
串口通訊
本節點以及下面的外部中斷,等節點都可以用STM32CubeMX來配置,簡單清晰
外部中斷
- 因為我們這里初始化的是 PA0,調用該函數后中斷線 0 會自動連接到 PA0。如果某個時間,我們又同樣的方式初始化了 PB0,那么 PA0 與中斷線的鏈接將被清除,而直接鏈接 PB0 到中斷線 0。(就是說最好不要用數字相同的IO口做外部中斷)
- 下面我們再總結一下配置 IO 口外部中斷的一般步驟:
1)使能 IO 口時鐘。
2)調用函數 HAL_GPIO_Init 設置 IO 口模式,觸發條件,使能 SYSCFG 時鐘以及設置 IO
口與中斷線的映射關系。
3)配置中斷優先級(NVIC),并使能中斷。
4)在中斷服務函數中調用外部中斷共用入口函數 HAL_GPIO_EXTI_IRQHandler。
5)編寫外部中斷回調函數 HAL_GPIO_EXTI_Callback 實現控制邏輯。
獨立看門狗(IWDG)實驗
1.含義,功能
在由單片機構成的微型計算機系統中,由于單片機的工作常常會受到來自外界電磁場的干擾,造成程序的跑飛,而陷入死循環,程序的正常運行被打斷,由單片機控制的系統無法繼續工作,會造成整個系統的陷入停滯狀態,發生不可預料的后果,所以出于對單片機運行狀態進行實時監測的考慮,便產生了一種專門用于監測單片機程序運行狀態的模塊或者芯片,俗稱“看門狗”(watchdog) 。
看門狗解決的問題是什么?
在啟動正常運行的時候,系統不能復位。
在系統跑飛(程序異常執行)的情況,系統復位,程序重新執行。
獨立看門狗(IWDG)由專用的低速時鐘(LSI)驅動,即使主時鐘發生
故障它仍有效。
*獨立看門狗適合應用于需要看門狗作為一個在主程序之外 能夠完全獨立工作,并且對時間精度要求低的場合。
窗口看門狗由從APB1時鐘分頻后得到時鐘驅動。通過可配置的時間窗口來檢測應用程序非正常的過遲或過早操作。
窗口看門狗最適合那些要求看門狗在精確計時窗口起作用的程序。
————————————————
版權聲明:本文為CSDN博主「hello__xs」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/hello__xs/arTIcle/details/53982372
2.
STM32H743 的獨立看門狗由內部專門的 32Khz 低速時鐘(LSI)驅動,即使主時鐘發生故
障,它也仍然有效。這里需要注意獨立看門狗的時鐘是一個內部 RC 時鐘,所以并不是準確的
32Khz,而是在 17~47Khz 之間的一個可變化的時鐘,只是我們在估算的時候,以 32Khz 的頻
率來計算,看門狗對時間的要求不是很精確,所以,時鐘有些偏差,都是可以接受的。
3 .相關寄存器
(IWDG_KR)
(IWDG_PR)
(IWDG_RLR)
1)看門狗溢出時間,該時間的計算方式為:
Tout=((4×2^prer) ×rlr) /32
其中 Tout 為看門狗溢出時間(單位為 ms);prer 為看門狗時鐘預分頻值(IWDG_PR 值),
范圍為 0~7;rlr 為看門狗的重裝載值(IWDG_RLR 的值);
比如我們設定 prer 值為 4(4 代表的是 64 分頻,HAL 庫中可以使用宏定義標識符
IWDG_PRESCALER_64),rlr 值為 500,那么就可以得到 Tout=64×500/32=1000ms,這樣,看
門狗的溢出時間就是 1s,只要你在一秒鐘之內,有一次寫入 0XAAAA 到 IWDG_KR,就不會
導致看門狗復位(當然寫入多次也是可以的)。這里需要提醒大家的是,看門狗的時鐘不是準確
的 32Khz,所以在喂狗的時候,最好不要太晚了,否則,有可能發生看門狗復位。
2)接下來我們講解一下通過 HAL 庫配置獨立看門狗的步驟:
1)取消寄存器寫保護,設置看門狗預分頻系數和重裝載值
2)重載計數值喂狗(向 IWDG_KR 寫入 0XAAAA)
3) 啟動看門狗(向 IWDG_KR 寫入 0XCCCC)
窗口看門狗(WWDG)實驗
兩個看門狗的區別
STM32有2個看門狗:獨立看門狗和窗口看門狗。
1.
獨立看門狗IWDG–獨立于系統之外,因為有獨立時鐘,所以不受系統影響的系統故障探測器,主要用于監視硬件錯誤。
窗口看門狗WWDG----系統內部的故障探測器,時鐘與系統相同。如果系統時鐘不走了,這個狗也就失去了作用了,主要用于監視軟件錯誤。
————————————————
版權聲明:本文為CSDN博主「豬哥-嵌入式」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/u012351051/article/details/50385074
2.
上窗口值(W[6:0])是由用戶自己設定的,根據實際要求來設計窗口值,但是一定要確保
窗口值大于 0X40,否則窗口就不存在了。
窗口看門狗的超時公式如下:
Twwdg=(4096×2^WDGTB×(T[5:0]+1)) /RCC_PCLK3;
其中:
Twwdg:WWDG 超時時間(單位為 ms)
RCC_PCLK3:PCLK3 的時鐘頻率(單位為 Khz)
WDGTB:WWDG 的預分頻系數
T[5:0]:窗口看門狗的計數器低 6 位
3. 相關寄存器
WWDG_CR
WWDG_CFR
WWDG_SR
4.步驟如下:
1)使能 WWDG 時鐘
2)設置窗口值,分頻數和計數器初始值
3)開啟 WWDG
4)使能中斷通道并配置優先級(如果開啟了 WWDG 中斷)
5)編寫中斷服務函數
6) 重寫窗口看門狗喚醒中斷處理回調函數 HAL_WWDG_EarlyWakeupCallback
下載地址
STM32H7學習繼續(STM32H7系列7)含外設的編程一般流程下載
本月熱點資料
最新資料
下載排行
本周
- STM32F407+ESP8266+SD卡進行遠程固件升級
- 單片機高級系列丨超聲波測距(數碼管顯示)
- STM32學習筆記(超詳細整理144個問題)--轉
- SSD1306 OLED驅動芯片 詳細介紹
- Arm Cortex-M4 MCU 以高速數據處理為目標
- PHILIPS>飛利浦>HX9352>電動牙刷>拆解+維修記錄
- 自動化專業大學生可以參加哪些競賽?
- 樹莓派有史以來首次漲價
- 不學51直接學stm32可以嗎?學stm32需要哪些基礎?
- 基于STM32的藍牙HC05調試程序 通過手機控制STM32單片機程序
本月
- 51單片機之邏輯運算指令ANL、ORL、XRL等
- macOS搭建51單片機開發環境
- 51單片機的定時器中斷(數碼管讀秒+LED閃爍)
- 第十二屆藍橋杯單片機省賽題目解析
- 基于51單片機的電子時鐘
- 單片機中斷問題30例及解決辦法
- VScode開發51單片機程序
- 51單片機的前世今世
- 單片機實驗:節日彩燈控制器
- 基于51單片機的LED呼吸燈設計(定時器)
用戶評論
查看全部 條評論
發表評論請先 登錄, 還沒有賬號?免費注冊。
發表評論