求會嵌入式的人





uj5u.com熱心網友回復:
電路圖呢?現附上代碼吧,直接修改即可:
void Init()
{
SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8); //選擇外部時鐘 HCLK/8
fac_us=SystemCoreClock/8000000; //為系統時鐘的1/8,實際上也就是在計算1usSysTick的VAL減的數目
fac_ms=(u16)fac_us*1000; //代表每個ms需要的systick時鐘數,即每毫秒SysTick的VAL減的數目
}
void delay(u16 nms)
{
u32 temp;
SysTick->LOAD=(u32)nms*fac_ms; //時間加載(SysTick->LOAD為24bit)
SysTick->VAL =0x00; //清空計數器
SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ; //開始倒數
do
{
temp=SysTick->CTRL;
}while((temp&0x01)&&!(temp&(1<<16))); //等待時間到達,看CTRL的第16位(COUNTFLAG)是否為1,看STRL的第0位(ENABLE)是否為1
SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk; //關閉計數器
SysTick->VAL =0X00; //清空計數器
}
主函式中初始化GPIO,呼叫Init()初始化,while(1)回圈中呼叫delay(200),后面直接控制led閃爍。
uj5u.com熱心網友回復:
當然,這是通過定時器直接定時的方式,也可以通過中斷的方式來實作。看看博文鏈接:https://blog.csdn.net/qq_38410730/article/details/79843806
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/126791.html
標籤:嵌入開發(WinCE)
上一篇:模擬電子技識訓礎
下一篇:計算機怎么實作正數相減的?
