i. 由于我的需求只跟高電平寬度有關,所以避免了使用 PWM 輸入模式,這樣可以每個管腳捕捉一路信號。如果
使用 PWM 模式,每一路需要占用兩個寄存器,所以一個定時器只能同時使用兩路 PWM 輸入。
ii. 由于捕捉需要觸發(fā)啟動定時器,所以 PWM 輸出與捕捉不容易在同一個 TIM 通道上實現(xiàn)。如果必須的話只能 增加計數(shù)溢出的相關代碼。
iii. 有些程序省略了捕捉通道的初始化代碼,這是不對的
iv. 在基本計時器初始化代碼里面注意選擇適當?shù)挠嫈?shù)器長度,最好讓波形長度不要長于一個計數(shù)周期,否則需 要增加溢出代碼很麻煩。一個計數(shù)周期的長度計算跟如下幾個參數(shù)有關:
(1) RCC 初始化代碼里面的 RCC_PCLKxConfig,這是 TIM 的基礎時鐘源與系統(tǒng)時鐘的關系。
(2) TIM 初始化的 TIM_Period,這是計數(shù)周期的值
(3) TIM 初始化的 TIM_Prescaler,這是計數(shù)周期的倍頻計數(shù)器,相當于調(diào)節(jié)計數(shù)周期,可以使 TIM_Period 盡 量大,提高計數(shù)精度。
STM32筆記之十二:時鐘不息工作不止,systic 時鐘應用
a) 目的:使用系統(tǒng)時鐘來進行兩項實驗——周期執(zhí)行代碼與精確定時延遲。
b) 初始化函數(shù)定義:
void SysTick_Configuration(void);
c) 初始化函數(shù)調(diào)用:
SysTick_Configuration();
d) 初始化函數(shù):
void SysTick_Configuration(void)
{
SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);//時鐘除8
SysTick_SetReload(250000); //計數(shù)周期長度
Tic_Val++;//變量遞增
vi. 調(diào)用代碼:Tic_Delay(10); //精確延時
vii. 疑問:如果去掉計時行那個沒用的 printf("");函數(shù)將停止工作,這個現(xiàn)象很奇怪
STM32筆記之十三:惡搞,兩只看門狗 a) 目的: 了解兩種看門狗(我叫它:系統(tǒng)運行故障探測器和獨立系統(tǒng)故障探測器,新手往往被這個并不形象的象形名稱搞糊涂)
之間的區(qū)別和基本用法。
b) 相同: 都是用來探測系統(tǒng)故障,通過編寫代碼定時發(fā)送故障清零信號(高手們都管這個代碼叫做“喂狗”),告訴它系統(tǒng)運行正常。
一旦系統(tǒng)故障,程序清零代碼(“喂狗”)無法執(zhí)行,其計數(shù)器就會計數(shù)不止,直到記到零并發(fā)生故障中斷(狗餓了開始 叫喚),控制 CPU 重啟整個系統(tǒng)(不行啦,開始咬人了,快跑……)。
c) 區(qū)別:
獨立看門狗 Iwdg——我的理解是獨立于系統(tǒng)之外,因為有獨立時鐘,所以不受系統(tǒng)影響的系統(tǒng)故障探測器。(這條狗是 借來的,見誰偷懶它都咬!)主要用于監(jiān)視硬件錯誤。
窗口看門狗 wwdg——我的理解是系統(tǒng)內(nèi)部的故障探測器,時鐘與系統(tǒng)相同。如果系統(tǒng)時鐘不走了,這個狗也就失去作 用了。(這條狗是老板娘養(yǎng)的,老板不干活兒他不管!)主要用于監(jiān)視軟件錯誤。
d) 初始化函數(shù)定義:鑒于兩只狗作用差不多,使用過程也差不多初始化函數(shù)栓一起了,用的時候根據(jù)情況刪減。
STM32筆記之十四:基本問題,來討論一下軟件架構
網(wǎng)上大家都在討論和學習,但是對于架構這個基本問題卻沒幾個人討論。個人認為有個好的架構是寫好代碼的基礎,可 以使后期的調(diào)式工作事半功倍!!
1、 架構組成:我的程序代碼分為四種結構 a) 順序執(zhí)行代碼 定義:按照順序逐行執(zhí)行的代碼 優(yōu)點:是思路簡單,代碼可靠不易被干擾。 缺點:占用資源
用途:只用來各種變量、函數(shù)的定義,硬件的初始化程序 位置:main.c 的開始一直到 main 函數(shù)的 while 函數(shù)之前
b) 空閑執(zhí)行代碼
定義:在 CPU 空閑的時候才執(zhí)行的代碼 優(yōu)點:不占用資源 缺點:執(zhí)行的實時性不能保證
用途:非實時任務,調(diào)試信息輸出,不重要的狀態(tài)指示 位置:main.c 的 main 函數(shù)的 while 函數(shù)內(nèi)部
c) 中斷執(zhí)行代碼 定義:由軟硬件事件打斷整個程序而執(zhí)行的代碼 優(yōu)點:可以保證實時性,各種中斷可以安排優(yōu)先順序 缺點:關系相對復雜,互相之間容易干擾 用途:觸發(fā)性的代碼,比如接收數(shù)據(jù),響應外部設備,按鈕的相應 位置:stm32f10x_it.c 內(nèi)部
時鐘不息工作不止,systic 時鐘應用
a) 目的:使用系統(tǒng)時鐘來進行兩項實驗——周期執(zhí)行代碼與精確定時延遲。
b) 初始化函數(shù)定義:
void SysTick_Configuration(void);
c) 初始化函數(shù)調(diào)用:
SysTick_Configuration();
d) 初始化函數(shù):