公司介紹網站怎么做只要做好關鍵詞優(yōu)化
周期
時鐘周期:也叫振蕩周期,就是單片機外接晶振的倒數,如12Mhz,周期就是1/12us,最小的時間單位。頻率越高,速度越快
指令周期:執(zhí)行一條指令需要的時間,一般由若干個機器周期組成
機器周期:一個指令的基本操作(取指,分析,執(zhí)指)所需要的時間為機器周期,一般由12個時鐘周期組成? 機器周期 = 12/晶振頻率
總線周期:CPU通過總線對外部進行一次訪問需要的時間? ?一個總線周期一般包含4個時鐘周期?
主頻(時鐘頻率):1秒鐘,時鐘周期的個數為主頻?
關于定時器的使用
1、滴答定時器,用于單一定時
rt_tick_t start;
start = rt_tick_get()if(rt_tick_get() - start < 3*1000)
{}
else
{}
2、使用rt_thread_mdelay(),用于多個定時處理
需要創(chuàng)建一個獨立的任務,如果需要重新定時,需要刪除改線程
rt_thread_t ruigang_output3_thread = RT_NULL; // 用于保存RUIGANG_OUTPUT3線程的句柄
void RUIGANG_OUTPUT3(void *param)
{while(1){if(!pi_in.pi_close && !pi_in.pi_reset && RUIGANG_Flag){contrl_pin(_24V_CNTL3, PIN_HIGH, PenFaTime5Sec);contrl_pin(_24V_CNTL3, PIN_LOW, PenFaTime3Min); contrl_pin(_24V_CNTL3, PIN_HIGH, PenFaTime3Sec);contrl_pin(_24V_CNTL3, PIN_LOW, PenFaTime5Min);rt_pin_write(_24V_CNTL3, PIN_HIGH);rt_thread_mdelay(PenFaTime5Min*60);}else{continue;}rt_thread_mdelay(10);}
}if (ruigang_output3_thread != RT_NULL){rt_thread_delete(ruigang_output3_thread); // 刪除當前線程}ruigang_output3_thread = rt_thread_create("RUIGANG_OUTPUT3",RUIGANG_OUTPUT3,RT_NULL,1024,PRIORITY_OUT3,10);if (ruigang_output3_thread != RT_NULL){rt_thread_startup(ruigang_output3_thread); // 啟動新線程}
3、軟件定時器 1秒定時器? 時間到了? 會自用調用 回調函數? ?
用于單一定時
#include <rtthread.h>// 定時器的回調函數
static void timer_callback(void* parameter)
{rt_kprintf("Timer tick\n");
}int main(void)
{// 定義定時器句柄rt_timer_t timer;// 創(chuàng)建軟件定時器timer = rt_timer_create("mytimer", // 定時器名稱timer_callback, // 定時器到期時調用的回調函數RT_NULL, // 傳給回調函數的參數rt_tick_from_millisecond(1000), // 定時周期,單位為tick。這里使用1秒作為周期。RT_TIMER_FLAG_PERIODIC | RT_TIMER_FLAG_SOFT_TIMER); // 定時器標志:周期性和軟件定時器// 判斷定時器是否創(chuàng)建成功if (timer != RT_NULL){// 啟動定時器rt_timer_start(timer);}return 0;
}