標題: 飛控開發基礎-[2] STM32定時器(LED航情燈、指示燈閃爍) [打印本頁]
作者: 設計開發工程 時間: 2020-3-26 15:48
標題: 飛控開發基礎-[2] STM32定時器(LED航情燈、指示燈閃爍)
圖片1.png (290.15 KB, 下載次數: 60)
下載附件
2020-3-26 15:39 上傳
定時器(LED航情燈、指示燈閃爍)一、定時器簡介
定時器具有定時功能,類似于生活中的“鬧鐘”,可以用定時器產生精確的定時時間,用來延時或者處理一些實時事件。
STM32系列的定時器分為基本定時器、通用定時器、高級控制定時器。后者包括前者的全部功能。通常地,STM32高級定時器是TIM1、TIM8,通用定時器是TIM2、TIM3、TIM4、TIM5,基本定時器是TIM6、TIM7。
而飛控的主核心STM32F103CBT6則有4路16位定時器分別是高級定時器TIM1、通用定時器TIM2、TIM3以及TIM4。
二、定時器寄存器STM32F103定時器相關的寄存器眾多,這里只講解重要的幾個寄存器。
(1)TIMx_CR1:使能寄存器,最低位控制寄存器的開關,如下圖所示:
圖片1.png (9.36 KB, 下載次數: 66)
下載附件
2020-3-26 15:40 上傳
TIM_CR1寄存器主要配置定時器的循環計數、使能等操作,例如CEN位為1是使能計數,為0是關閉計數。
(2)TIMx_DIER: 定時器中斷使能寄存器, 最低位控制事件更新中斷的開關, 如下圖所示:
圖片2.png (8.27 KB, 下載次數: 54)
下載附件
2020-3-26 15:40 上傳
該寄存的主要功能是配置定時器是定時器的中斷使能位,主要使用的是UIE位,UIE為1是使能中斷,為0時關閉中斷。
(3)TIMx_PSC:定時器時鐘分頻寄存器,如下圖所示:
圖片3.png (5.77 KB, 下載次數: 54)
下載附件
2020-3-26 15:40 上傳
該寄存器負責把定時器時鐘分頻之后,再輸出給計數器,PSC[15:0]為分頻系數。
(4)TIMx_ARR:定時器自動重裝載寄存器,如下圖所示:
圖片4.png (5.56 KB, 下載次數: 53)
下載附件
2020-3-26 15:41 上傳
ARR[15:0]為自動重裝載值,當定時器采用向上計數時,計數值等于ARR時,產生一個更新事件;當定時器采用向下計數時,最開始將ARR的值賦給計數值,計數值向下累減為0時,產生一個更新事件,再次將ARR的值賦給計數值,進行新一輪的向下計數。
(5)TIMx_SR: 狀態寄存器,標記當前與定時器相關的各種事件/中斷是否發生,我們只用到最低位表示事件更新中斷的標志位,如下圖所示:
圖片5.png (10.49 KB, 下載次數: 60)
下載附件
2020-3-26 15:41 上傳
該寄存器主要用于查看定時器的更新中斷標志位,當計數發生上溢或者下溢時,UIF位將被置1,標志一次計數完成。
三、定時器實驗本節實驗的內容是主要是針對GPIO中的周期性點亮無人機的航情燈以及信號燈,對其進行變形,使用通用定時器TIM3精確定時周期性點亮及關閉無人機的航情燈以及信號燈。
同樣也是查看原理圖可以得知無人機的航情燈同一接在NPN三極管Q1上,而三極管的基極又接在了單片機的PA8上;兩個信號燈分別接在了PC13和PC14上。
圖片6.png (552.55 KB, 下載次數: 59)
下載附件
2020-3-26 15:42 上傳
圖片7.png (9.43 KB, 下載次數: 60)
下載附件
2020-3-26 15:42 上傳
圖片8.png (84.6 KB, 下載次數: 55)
下載附件
2020-3-26 15:43 上傳
關于GPIO這部分的驅動代碼可以沿襲保留,不同的是需要加入定時器的初始化以及配置定時器中斷,編寫代碼的思路如下表所示。
編程思路
1 | | 1、定義結構體; 2、使能時鐘; 3、填充結構體; 4、裝載結構體。 |
| | 1、定義結構體; 2、使能時鐘; 3、填充結構體; 4、裝載結構體; 5、使能時鐘; 6、使能定時器。 |
| | |
| | 1、判斷是否觸發中斷; 2、清除標志位; 3、其它邏輯。 |
按照代碼思路,編寫代碼(通過調用官方庫)如下圖所示為GPIO相關驅動代碼:
圖片9.png (22.46 KB, 下載次數: 57)
下載附件
2020-3-26 15:44 上傳
圖片10.png (28.25 KB, 下載次數: 52)
下載附件
2020-3-26 15:44 上傳
完成配置GPIO后,便是對定時器進行配置,我們的STM32是外接了8MHz的晶振的,主頻是72MHz先來看一下時鐘樹圖,如下圖所示。
圖片11.png (2.55 MB, 下載次數: 53)
下載附件
2020-3-26 15:44 上傳
定時器是掛載在APB1時鐘總線下的(從手冊可知),從時鐘樹圖中可知APB1用于定時器的時鐘頻率在未分頻的是情況下72MHz,根據定時器時鐘分頻寄存器(TIMx_PSC)以及定時器自動重裝載寄存器(TIMx_ARR)之間的關系,可以得出,定時時間:
Tout=((arr+1)*(psc+1))/Ft s
其中Tout為定時時間單位為s,arr為自動重裝載寄存器的初值,psc為分頻系數,Ft為APB的主頻,也就是72MHz。那么要定時1s則只需要把arr設置為載值9999,psc設置為7199即可,即:
Tout=((9999+1)*(7199+1))/72000000
=10000*7200/72000000
=72000000/72000000
=1s
所以可以得到定時器初始化代碼如下圖所示。
圖片12.png (64.09 KB, 下載次數: 61)
下載附件
2020-3-26 15:46 上傳
配置完成后便會1s周期進入一次定時器中斷,在定時器中斷里對無人機的航情燈以及指示燈的GPIO端口進行翻轉即可實現,周期性點亮,代碼如下圖所示。
圖片13.png (32.52 KB, 下載次數: 56)
下載附件
2020-3-26 15:47 上傳
寫好代碼后保存、編譯、下載,然后就可以看到飛控的LED指示燈以及四個螺旋槳下面的航情燈周期1S閃爍,如下圖所示。
圖片14.png (330.16 KB, 下載次數: 62)
下載附件
2020-3-26 15:47 上傳
-
-
2.飛控開發基礎-【2】定時器(LED航情燈、指示燈閃爍).pdf
2020-3-26 15:48 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
940.51 KB, 下載次數: 19, 下載積分: 黑幣 -5
歡迎光臨 (http://m.zg4o1577.cn/bbs/) |
Powered by Discuz! X3.1 |
主站蜘蛛池模板:
亚洲小视频在线观看
|
亚洲精品在线免费看
|
国产精品精品视频一区二区三区
|
欧美日韩一区二区三区在线观看
|
成人av网站在线观看
|
国产精品日韩在线观看一区二区
|
噜噜噜色网
|
亚洲欧美日韩精品久久亚洲区
|
欧美一区二区免费
|
美女视频.|
久久爆操
|
日韩欧美国产精品综合嫩v
一区中文字幕
|
国产亚洲精品久久19p
|
精品久久久久一区
|
av日韩一区
|
日本一区二区在线视频
|
欧美激情视频网站
|
爱爱小视频
|
18av在线播放
|
中文字幕丁香5月
|
精品国产视频
|
欧美精品一级
|
亚洲欧美日韩电影
|
亚洲精品成人
|
欧美日韩电影一区二区
|
成人影院av
|
亚洲精品九九
|
天堂成人国产精品一区
|
国产成人网
|
成人高清在线视频
|
五月天婷婷激情
|
亚洲精品乱码久久久久久蜜桃91
|
国产精品99一区二区
|
狠狠干av|
欧美区在线
|
毛片一区二区三区
|
成年人在线观看视频
|
成人国产精品久久
|
国产精品久久久久久久久久
|
亚洲一区二区高清
|
久久99精品久久
|