https://www.cnblogs.com/yangfengwu/p/11094009.html
定時器有兩種,軟件定時器和硬件定時器
軟件定時器就是靠里面的任務延時實現的,,這樣的定時器其實延時不准確
硬件定時器 就是硬件中斷定時器,咱都學過單片機,中斷的准確
先看軟件定時器


具體大家看下面
所以第一步,定義一個定時器變量
可以看這個文件,咱就是用這個頭文件

os_timer_t os_timer_one;//定義一個全局的定時器結構體變量


先看帶參數的

void *XXX 就是說可以接收任意的指針變量
//定義一個定時器用的回調函數 void os_timer_one_function(void *parg) { printf("parg:%s\n", parg);//打印一下傳過來的參數 GPIO_OUTPUT_SET(5, 1-GPIO_INPUT_GET(5));//GPIO5輸出 反轉 }

os_timer_setfn(&os_timer_one,os_timer_one_function,"yang");//配置定時器 定時器結構體變量 回調函數 傳給回調函數的參數 os_timer_arm(&os_timer_one,500,1);//使能定時器 os_timer_one--定時器變量 500--500ms進一次 1--循環進去
下載進去
500ms亮 500ms滅

其實這個參數是
os_timer_setfn(&os_timer_one,os_timer_one_function,"yang");
這個時候傳過去的,只傳這一次,只不過,局部變量的值設置了是yang 后期進中斷的時候都沒有去設置這個參數

不帶參數就不說了哈
大家自己測試,報不報錯就看官方底層怎么寫的了

現在看硬件中斷定時器




然后...官方給了例子

咱就稍微改改回調函數里面的



程序掛了......不可以運行了,總是=重啟
然后我把

程序又好了
我感覺這個定時器是us級的定時器
1000 才1ms
1ms進一次執行 printf printf還沒執行完 中斷又到了 所以程序崩了
u32 cnt = 0; void hw_test_timer_cb(void) { cnt++; if(cnt>1000) { cnt=0; printf("1111111111111:%s\n");//打印 } }


忘了..我后面怎么加了個%s 忘了去掉了


