无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

《二》canfestival系列教程之軟件定時(shí)器分析(2)

2021-09-10 13:11 作者:GXTon_阿通  | 我要投稿


以stm32單片機(jī)為例,精講一下代碼:

上文說到,軟件定時(shí)器對(duì)canfestival很重要.canfestival中大部分時(shí)間都是靠軟件定時(shí)器觸發(fā)的.

這里的所有軟件定時(shí)器,都是依靠一個(gè)硬件定時(shí)器模擬出來的.

就以stm32單片機(jī)的timer14定時(shí)器為例,

首先要配置timer14定時(shí)器,配置成向上計(jì)數(shù),每1us計(jì)數(shù)一次,并且開啟中斷.

對(duì)于硬件定時(shí)器的配置,最主要的是弄明白計(jì)數(shù)1次,消耗多少時(shí)間.也就是分配參數(shù).

上面的例子是每1us,計(jì)數(shù)一次,它就是canfestival的最小時(shí)間單位了.

定時(shí)器的中斷優(yōu)先級(jí)nvic配置

中斷發(fā)生后的處理函數(shù):

在里面會(huì)調(diào)用TimeDispatch( )這里是canfestival的接口函數(shù)

TimeDispatch(?)放入到中斷函數(shù)里面后,它就會(huì)不斷改變timer14定時(shí)器的周期,來模擬出多個(gè)軟件定時(shí).也就是每個(gè)軟件定時(shí)器溢出,都會(huì)觸發(fā)timer14定時(shí)器的中斷.

(可以把圖片保存下來看,或者全屏看:-)

TimeDispatch(?)函數(shù)中,調(diào)用的兩個(gè)函數(shù)是需要我們根據(jù)開發(fā)環(huán)境編寫的.

這里用的是stm32的開發(fā)環(huán)境.setTimer( )getElapsedTime()

canfestival中有兩個(gè)時(shí)間單位一個(gè)是us,另一個(gè)是ms.

在timerscfg.h中需要配置三個(gè)參數(shù):

TIMEVAL_MAX? 是硬件定時(shí)器最大的周期,因?yàn)槲覀僼imer14設(shè)置的是5000,所以這個(gè)參數(shù)不要超過5000.

MS_TO_TIMEVAL?是ms的計(jì)數(shù).timer14中配置的是每1us計(jì)數(shù)一次.所以這個(gè)ms要配置成1000.系數(shù)要配置成1000.

US_TO_TIMEVAL?是us,硬件定時(shí)器timer14本身就是1us計(jì)數(shù)一次,所以這里系數(shù)是1.

TimeDispatch(?)會(huì)遍歷timers中的所有軟件定時(shí)器,這里面timers實(shí)質(zhì)上是一個(gè)數(shù)組,這個(gè)數(shù)組的上限個(gè)數(shù)為MAX_NB_TIMER.


《二》canfestival系列教程之軟件定時(shí)器分析(2)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
西充县| 洪洞县| 大城县| 保山市| 子长县| 临城县| 铜山县| 图们市| 揭东县| 文成县| 东港市| 台北县| 榆林市| 乐清市| 邮箱| 文昌市| 肥城市| 普兰店市| 大连市| 皋兰县| 沙坪坝区| 青岛市| 喀喇沁旗| 龙陵县| 无为县| 油尖旺区| 钦州市| 兴城市| 仁寿县| 贵南县| 金溪县| 武山县| 周宁县| 阳原县| 崇仁县| 张掖市| 洛浦县| 泰顺县| 盘锦市| 昌邑市| 崇左市|