恩智浦智能车(CNYouth)
K60有4個PIT模塊,可用于定時、計時、延時作用。
智能車學(xué)習(xí)總結(jié):
INT_COUNT? 0xFFFF(這是最大值)? ?//LPT產(chǎn)生中斷的計數(shù)次數(shù)。
PIT模塊,LPTMR模塊,SysTick模塊。
SysTick:滴答定時器
FTM產(chǎn)生PWM脈沖,所謂的定時就是設(shè)置一定時間,時間到了就執(zhí)行程序。
led_turn(LED0)? ?// 閃爍LED0
PIT_Flag_Clear(PTTO);//清楚中斷標(biāo)志
lptmr_timing_ms(uint16 ms);//定時(ms)毫秒
lptmr_delay_us(uint16 us);//延時(us)
注意:如果你啟動(開始計時)的時候用的us,那么你計時(獲取時間)的時候也要用us,ms同理。
lptmr_time_start_ms(void);//開始計時(ms)lptmr_time_get_ms(void);//獲取計時時間lptmr_time_start_us(void);//開始計時(us)lptmr_time_get_us(void);//獲取計時時間關(guān)閉計時器:lptmr_time_close();//關(guān)閉計時器都是統(tǒng)一的?
由如上兩個圖片可以得出PIT模塊,LPTMR模塊兩個模塊的計時函數(shù)差不多,在用法上。
這是第二個有一個關(guān)閉的函數(shù),其實用不用無所謂,因為再次啟動的時候就會清零。
同一時間只能進(jìn)行一個脈沖計數(shù)。
Cortex-M是單片機(jī)。內(nèi)核自帶的滴答定時器。好比是人的心臟會砰砰跳。
core_clk_khz //內(nèi)核時鐘,因為內(nèi)核時鐘調(diào)頻會調(diào)很高,所以計時時間很短,所以難以準(zhǔn)確,所以一般不用來計時。上面設(shè)置中斷服務(wù)函數(shù)為SysTick_IRQHandler就可以直接調(diào)用下面設(shè)置的中斷服務(wù)函數(shù),下面設(shè)置中斷服務(wù)函數(shù),?(兩個函數(shù)在同一個頁面,放在main.c文件)
為什么上面設(shè)置計時100ms,因為他的計時時間是很短的,如果設(shè)置1000ms的話,會超出計算配置,比如可能就崩潰了,或者完全記錄不準(zhǔn)啥的。
Assertion failed in? 斷點失敗,在那個位置,都會一一顯示出來。問題出現(xiàn)在如下,是時間超出范圍的原因。
如果我們并不想將就于100毫秒的束縛,但是我們有不得不在那里填一個100毫秒,那么我們的辦法是,循環(huán)!怎么循環(huán)?怎么實現(xiàn)了循環(huán),就是一次次的調(diào)用,首先調(diào)用 SysTick_IRQHandler函數(shù)作為 set_vector_handler的參數(shù),如果要讓這個參數(shù)起到作用,那么就要 SysTick_IRQHandler 函數(shù)執(zhí)行 led_turn(LED0);當(dāng)然就是讓燈閃爍啦,當(dāng)然,滿足條件i==10才讓燈閃爍,當(dāng)然滿足條件的時候,也經(jīng)過了十次調(diào)用了,在此過程中 led_init(LED0);也不斷初始化,systick_timing_ms(100);也執(zhí)行了十次。當(dāng) i==10;時,調(diào)用led_turn(LED0);開始閃爍。閃爍完緊接著給 i 初始為0;然后又開始新的一輪!
很多實時系統(tǒng)的定時器就是使用這個方法實現(xiàn)的!
集成到中斷NVIC模塊上,一般用作操作系統(tǒng)的心臟,提供定時切換任務(wù)。
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
總結(jié)
以上是生活随笔為你收集整理的恩智浦智能车(CNYouth)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: uniapp封装request
- 下一篇: 2021低压电工考试题初训复审