娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

假設使用定時器3每1毫秒定時;保存至SD卡的函數是StartSave();
第一種情況:定時器快,主循環慢
1、代碼設計1(錯誤的設計)
[cpp] view plain copy
int cnt = 0; //計數  
//TIM3中斷處理函數  
void TIM3_IRQHandler(void)  
{  
    if(TIM_GetITStatus(TIM3,TIM_IT_Update)!=RESET)   
    {  
        TIM_ClearITPendingBit(TIM3, TIM_IT_Update  );    
        cnt ++;     
    }  
}  
void main(void)  
{  
   代碼段1  
   while(1)  
   {  
     代碼段2  
     if(cnt %100 == 0)  
     {  
    StartSave();  
     }  
     代碼段3  
   }  
}  
分析:第一種設計經測試發現并沒有按照預期的100毫秒間隔保存;原因何在呢?
很明顯后臺程序運行較快,當cnt 變為100的倍數時,主循環可能到達“代碼段3”,當主循環再次到達
“代碼段2”時,定時器中斷已經改變了cnt的值。


2、代碼設計2(在這種情況下正確)
[cpp] view plain copy
int cnt = 0; //計數  
unsigned char isOK = 0;  
void TIM3_IRQHandler(void)  
{  
    if(TIM_GetITStatus(TIM3,TIM_IT_Update)!=RESET)   
    {  
        TIM_ClearITPendingBit(TIM3, TIM_IT_Update  );    
        if(cnt++ % 100 == 0)  
             isOK = 1;  
    }  
}  
void main(void)  
{  
   代碼段1  
   while(1)  
   {  
     代碼段2  
     if(isOK == 1)  
     {  
    isOK = 0;  
        StartSave();  
     }  
     代碼段3  
   }  
}  
設計2避免了1中所出現的問題。
第二種情況:定時器慢,主循環快
在這種情況下上面的代碼設計2就出現問題了。出現保存多了的情況。
原因很明顯,isOK這個變量的變化相對于主循環來說變化太慢了。會出現isOK一直為1 的情況。
假設定時器定時1ms,主循環0.5ms周期
1、代碼設計1(錯誤的設計)
[cpp] view plain copy
void TIM3_IRQHandler(void)  
{  
    if(TIM_GetITStatus(TIM3,TIM_IT_Update)!=RESET)   
    {  
        TIM_ClearITPendingBit(TIM3, TIM_IT_Update  );    
        cnt++;//該值理論保持時間僅1ms  
    }  
}  
void main(void)  
{  
   unsigned char saveFin = 0;  
   代碼段1  
   while(1)  
   {  
     代碼段2  
     if(cnt%100 )  
     {  
        StartSave();//明顯出現100ms內多次保存的情況,因為主循環快  
     }  
     代碼段3  
   }  
}  
2、代碼設計2(正確的設計)
[cpp] view plain copy
unsigned char saveFin = 0;  
void TIM3_IRQHandler(void)  
{  
    if(TIM_GetITStatus(TIM3,TIM_IT_Update)!=RESET)   
    {  
        TIM_ClearITPendingBit(TIM3, TIM_IT_Update  );    
        cnt++;//該值理論保持時間僅1ms  
    }  
}  
void main(void)  
{  
   unsigned char saveFin = 0;  
   代碼段1  
   while(1)  
   {  
     代碼段2  
     if(cnt%100 == 0 && saveFin == 0 )  
     {  
        saveFin = 1;  
        StartSave();  
     }  
     else  
     {  
        saveFin = 0;   
     }  
     代碼段3  
   }  
}  
第三種情況:不能確定定時器和main循環周期哪個快的設計
當然主循環的周期不能大于保存周期100ms
[cpp] view plain copy
unsigned char isOK = 0;  
unsigned int clkCnt = 0;  
void TIM3_IRQHandler(void)  
{  
    if(TIM_GetITStatus(TIM3,TIM_IT_Update)!=RESET)   
    {  
        TIM_ClearITPendingBit(TIM3, TIM_IT_Update  );   
        if(clkCnt++ % 10 == 0)  
             cnt++;//該值理論保持時間10ms,需要在主循環中清零  
    }  
}  
void main(void)  
{  
   unsigned char saveFin = 1;//注意這里的初始值為1,與前面設計不同  
   代碼段1  
   while(1) //循環周期不能大于10ms,否則丟失對cnt的判斷  
   {  
     代碼段2  
     if(cnt%10 == 0) //例如在100ms--110ms之間時將“保存標志”清零  
     {  
    saveFin = 0;   
     }  
     else  //例如在110ms--200ms之間時完成保存  
     {  
        if(saveFin == 0)//在110ms--200ms之間只能保存一次的代碼設計  
        {  
           startSave();  
           saveFin = 1;  
        }  
     }  
     代碼段3  
   }  
}

關鍵字:STM32  定時器程序 引用地址:STM32學習之:定時器程序設計探討

上一篇:STM32學習之:事件標志組
下一篇:STM32學習之:Context—M3簡介

推薦閱讀

本文為STM32定時器設計大體簡介。 一、定時器簡介1、時鐘來源2、定時器結構(以基本定時器為例)二、基本定時器的編程方法1、基本定時器的寄存器2、例程/*** @brief 定時器6的初始化,定時周期0.01s* @param 無* @retval 無*/void TIM6_Init(void){TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;/*AHB = 72MHz,RCC_CFGR的PPRE1 = 2,所以APB1...
12864液晶在出廠時其對比度已經調好,所以用戶在使用的時候第三管腳可不用接任何東西,本實驗板上為了兼容多家12864液晶所以加了液晶對比度調節電位器,若用戶使用我們配套的12864液晶可不用管它,液晶的第三管腳懸空就可以。有些液晶功耗比較大,用戶在使用的時候可將液晶的第19、20引腳的背光不接,這樣字體會很清楚。 單片機源程序如下:/**************...
2020年9月,由中國人工智能產業發展聯盟(AIIA)主辦的“AIIA2020人工智能開發者大會”在北京舉行。Imagination Technologies作為投身人工智能領域多年的領先半導體知識產權供應商,也參與了此次活動。Imagination中國區戰略市場與生態高級總監時昕代表公司出席,并在主論壇上發表了“基于GPU與神經網絡加速器的異構計算平臺”的主題演講,分享了AI芯片的...
美國最大的存儲芯片制造商美光于當地時間周三表示,隨著世界各國政府爭相將重要的半導體生產帶到本土,它將在未來十年內投資1500億美元用于芯片制造和研發。據《日經亞洲評論》報道,美光總裁兼CEO Sanjay Mehrotra在一份聲明中表示,內存處于半導體制造的前沿,能夠為功能豐富的5G智能手機以及支持人工智能的云計算提供動力。美光期待與包括美國在內的...

史海拾趣

問答坊 | AI 解惑

ATM監控專業評標標準!!!

ATM監控專業評標標準!!! 資質審查1. 數字錄像設備和微型攝像機同時獲得公安部安全防范報警系統產品質量監督檢驗測試中心出具的型式檢驗報告。 依據標準: A. 公安部關于貫徹實施《安全技術防范產品管理辦法》有關問題的補充通知第二條 B. 《 ...…

查看全部問答∨

開發板mount 不上PC機

使用是HHARM2410的開發板。NFS服務器配置操作是正確的,PC與開發板之間相互能ping通,但是開發板正常啟動后mount 不了PC機。我已經關了防火墻。我主機IP為192.168.2.222。/etc/exports文件設置的是(rw)。在minnicon里執行mount 192.168.2.222:/ /m ...…

查看全部問答∨

誰有cross-3.4.4.tar.gz源碼包的共享一下,謝謝

誰有cross-3.4.4.tar.gz源碼包的共享一下,謝謝…

查看全部問答∨

GSM AT命令 查詢手機卡余額

兄弟們,我想做一個GSM短信模塊,不知道查詢手機卡余額是什么,有人做過嗎…

查看全部問答∨

為什么SER16550里沒有GetSerialObjet這個函數???

GetSerialObjet不是PDD必要的嗎?為什么找不到呢, 另WINCE500里哪一個文件是串口單體驅動程序??? 謝謝…

查看全部問答∨

16位的80186微處理器與8位NVRAM之間地址線互連的一個問題

    16位80186與8位NVRAM之間互連只能以地址線A1對其A0,CPU本身的A0與NVRAM不連接。     有誰知道為什么。…

查看全部問答∨

兄弟們推薦一 自動增益控制 電路(AGC)的片子 謝謝啦

      單位要設計了 一電壓過零檢測電路   需要從幾毫伏 到幾伏之間 頻率小于1khz 的 電壓中檢測出零點  ,一直很迷茫  我的設計大致步驟如下  希望各位大俠幫幫我信號  經AGC放大到5伏     ...…

查看全部問答∨

如何申請STM32樣片(做電機控制用)代替2406??

                                 如何申請STM32  樣片(做電機控制用)代替2406??…

查看全部問答∨

求助:Spartan-605 FPGA 怎樣外接硬盤

Spartan-605 FPGA 怎樣外接硬盤,感覺sp605的開發板上好像沒有接硬盤的接口,求助!!!…

查看全部問答∨

關于virtualbox共享文件的問題

virtualbox ubunto想與win7 host共享文件,按照網上的做法掛在之后,mnt下的目標文件并沒有實現與win7共享,請問前輩這是什么問題啊?我的做法如下:使用virtualbox帶的Shared Folders功能首先 安裝附加組件:點擊virtualbox的Devices(設備)----- ...…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 福州市| 嘉义县| 临武县| 莒南县| 大荔县| 深水埗区| 九龙城区| 湖南省| 丹凤县| 福泉市| 即墨市| 莎车县| 德州市| 北京市| 咸宁市| 康保县| 楚雄市| 正蓝旗| 梅州市| 民和| 桐城市| 琼结县| 惠安县| 镇安县| 克东县| 康定县| 九龙城区| 墨玉县| 沁源县| 南昌县| 洪江市| 蓬安县| 仁布县| 霸州市| 浦东新区| 阳新县| 织金县| 五指山市| 竹北市| 平乡县| 林口县|