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