定時器**說明 參考
1---設定模式 通過 暫存器mode 設定 0為timer模式【定時】 1為counter模式【計數】
**nrf_timer3->mode = timer_mode_mode_timer << timer_mode_mode_pos;
nrf_timer4->mode = timer_mode_mode_timer << timer_mode_mode_pos;
0 << 0
2---頻率
ftimer = 16 mhz / (2^prescaler)
如果需要timer的時鐘為 4m,那麼4 = ftimer = 16m/2^2
**nrf_timer3->prescaler = 0x05 << timer_prescaler_prescaler_pos; ///< 0.5 mhz
5 << 0
那就是16/2的5次方 =1/2 所以就是0.5m
nrf_timer4->prescaler = 0x02 << timer_prescaler_prescaler_pos; ///< 4 mhz
2 << 0
那就是16/2的2次方 =4 所以就是4m
那麼是怎麼配置成16m的呢?
解答1 我們原理圖右上角 是外接的32m晶振
解答2
注意檔案 system_nrf52840
void systeminit(void)
nrf_clock->events_hfclkstarted = 0;//hfclk晶振執行狀態標誌位 0關閉,1執行
nrf_clock->tasks_hfclkstart = 1;//高外晶振hfclk 0關閉,1啟動
while(!nrf_clock->events_hfclkstarted);//等待hfclk晶振執行狀態標誌位 為1
3---
設定cc[n]暫存器的值,定時就是通過這個值來設定的。
案例:1m的時鐘源則乙個tick為1us,所以要定時1s,則cc[0]的值我們填入 1000000就行了。
(這裡也可以選擇cc[1],cc[2],或cc[3],只要下面對應的compare事件產生中斷設定成對應的就可以了)
4通過暫存器intenset 第16bit位設定compare[0]事件產生時觸發中斷。
5通過nvic的功能函式nvic_enableirq 來使能mcu的timer0中斷
6最後通過timer/counter模組的 start 啟動timer。
我的測試時ok的
void timer3_irqhandler(void)
}void time_test_1s(void)
問題1 我們外接的32m怎麼體現?
問題2 那個system_nrf52840裡面的64怎麼體現
看上去全部是16m計算的!!!!
當修改多個比較值時候
修改如下
nrf_timer3->cc[0] = 5000000;
nrf_timer3->cc[1] = 1000000;
nrf_timer3->cc[2] = 2000000;
nrf_timer3->cc[3] = 3000000;
nrf_timer3->cc[4] = 4000000;
//nrf_timer3->intenset = 1<<16;//設定compare[0]事件產生時觸發中斷
nrf_timer3->intenset = 1<<17|1<<18|1<<19|1<<20;//設定compare[1-2-3-4]事件
//timer_intenset_compare1_msk | timer_intenset_compare2_msk | timer_intenset_compare3_msk | timer_intenset_compare4_msk;
是裡面最大的 後面一次增大
沒1s中斷一次
定時器 timer0和timer0
中斷法相對於查詢法有兩個優點 1.節省能量 2.節省時間 定時器的使用方法 1.開啟總中斷 2.設定定時器的工作方式 3.設定初值 4.開啟定時中斷 5.開啟定時計數 對於定時器0的初始化 void timer0 void 同理可得定時器1 的初始化 void timer0 void 在設定工作方式...
測試定時器0的程式
這是寫的乙個簡單的測試定時器0的程式 要實現的目標是,led第乙個跟第二個燈先迴圈亮起,第三盞燈則以間隔一秒鐘的時間亮起一次,其中,第三盞燈的亮起時間以定時器0的中斷來執行,裡邊有亮點需要注意。一 不要忘記中斷程式中進if語句中的後的tt清零 二 不要忘了把定時器裡邊的語句回歸哦,否則老是認為中斷服...
Mysql 檢視定時器 開啟定時器 設定定時器時間
1.檢視是否開啟evevt與開啟evevt。1.1 mysql evevt功能預設是關閉的,可以使用下面的語句來看evevt的狀態,如果是off或者0,表示是關閉的。show variables like sche 1.2 開啟evevt功能 setglobal event scheduler 1 ...