1.系統滴答定時器systick,核心自帶的24位遞減計數器,可計數2^24-1=16777215,計數到0後產生中斷標誌位countflag
時鐘可**於sysclk的8分頻或sysclk
2.systick相關暫存器 val load ctrl
3.systick的ctrl的第16位countflag判斷val值是否到0,延時是否完成
4.使用者while()**迴圈不能太長時間,否則可能有些狀態監測會失靈
5.設計程式的時候,while(1)死迴圈中掃瞄的**稱為後台程式,中斷則稱為前台程式
6.m3核心的中斷分為兩大部分,10個系統中斷和240個外設中斷 stm32f103用到了10個系統中斷,和60個外設中斷
7.外部中斷線中斷的一般過程 ,中斷遮蔽(使能)暫存器exti_imr和掛起暫存器exti_pr同時為1,則會產生nvic中斷請求
軟體中斷事件暫存器exti_swier可以直接置位進入中斷,不需要外部事件發生
事件遮蔽暫存器exti_emr基本不使用,置1時,開放來自線上的中斷事件請求
邊沿觸發模式暫存器exti_rtsr和exti_ftsr
外部中斷配置暫存器afio_exticrx將中斷線配置到特定的gpio口
1或門 2與門 3與門
外部中斷配置過程:1,首先配置中斷優先組分組nvic
2,設定使用的特定中斷的搶占和響應優先順序並使能中斷
3,開啟gpio時鐘,afio時鐘、復用中斷線功能時鐘,設定外部中斷特定中斷線的訊號源,中斷模式,觸發方式,使能外部中斷遮蔽暫存器
8.某.c檔案的全域性變數,需要在其.h中進行外部宣告,才能被整個工程所呼叫
9.盡量特定的功能對應特定的.h和.c檔案,函式編寫要規範
10.
stm32 軟體精確延時非systick 非中斷
在阿莫上有位大神hcambridge推薦的軟體精確延時 精確延時函式呼叫wait void wait unsigned long n while n 精確延時函式 define sysclk 72 指明cpu工作頻率為72mhz define a 6 一次迴圈所花的週期數 define b 3 呼叫...
精確延時的實現
大家平時寫練習程式,包括 上的範例程式,很多延時都直接用的 sleep 實現。這個延時有個缺點,那就是無法統計 執行的時間。請看下圖 由圖可以看到,使用 api 函式 sleep 的問題,就是會忽略掉程式的執行時間。很多時候,程式的執行時間是不固定的,所以這就導致使用 sleep 的延時並不精確,即...
STM32精確延時
前面用 stm32 的gpio 模擬液晶驅動 時序時遇到乙個問題,就是怎樣產生一段較為精確的延時。通常產生一小段延時的方法就是利用乙個遞增或者遞減迴圈進行軟體延時。例 void delay void 我在使用 mplab ide 進行pic 微控制器的開發時,mplab 提供了乙個 watch 跑錶...