音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

如何安排多級中斷?

作者:hwqfj 欄目:單片機
如何安排多級中斷?
我的系統(tǒng)中有2個中斷,按中斷優(yōu)先級高低排列順序如下:
1、定時器1中斷,每1ms中斷一次,用于速度采樣
2、鍵盤中斷,讀取鍵碼

問題是:系統(tǒng)進入采樣循環(huán)后,想通過按鍵來結(jié)束循環(huán)。但是,當按鍵按下后,系統(tǒng)并不能退出循環(huán),而是死在

While(sampletime!=0);這里。按理說,按鍵中斷并不破壞定時器的中斷。空l能幫我分析一下是什么原因?

/***********示例程序************************/

unsigned int sampletime;   //定義采樣周期
unsigned int KEY;          //
#define KEY_ESC  06        //定義ESC鍵

Timer_Initial();//定時器初始化

Interrupt_Timer  //定時器中斷
{
  sampletime--;   //采樣次數(shù)減1
  Timer_Initial();  //重新初始化定時器
}

KeyScan();   //鍵盤讀取程序

Interrupt_Key  //鍵盤中斷程序
{
   KEY=KeyScan(); //讀取鍵碼
}

main()
{
  while(KEY!=KEY_ESC)   //判斷ESC鍵是否按下
  {
      Timer_Initial();
      while(sampletime!=0);  //等待采樣周期結(jié)束
      /*
      一些系統(tǒng)控制代碼
      */
  }
}

2樓: >>參與討論
艾森豪威爾
你的鍵盤中斷優(yōu)先級比定時器1中斷優(yōu)先級高
那你進入鍵盤中斷后,定時器1的中斷就無法進入了
建議你把鍵盤中斷優(yōu)先級降低到低于定時器1中斷優(yōu)先級

3樓: >>參與討論
hwqfj
鍵盤優(yōu)先級比定時器1低!
我設(shè)置的時候就是這樣的。采樣周期未結(jié)束時,鍵盤中斷出現(xiàn),兩者之間出現(xiàn)了沖突。是不是定時器1的中斷時間太短?

4樓: >>參與討論
567
Timer_Initial()內(nèi)部的原因,和鍵盤無關(guān)。
 
5樓: >>參與討論
hwqfj
Timer_Initial()只有幾條語句!
Timer_Initial()
{
   // 允許定時器的周期中斷
   // 清除定時器周期中斷標志
   //設(shè)置定時器中斷周期為1ms
   //定時器計數(shù)清零
   //啟動定時器
                   
}

6樓: >>參與討論
gw1428jk
我覺得按鍵用中斷不太合適,想想其他辦法吧
 
7樓: >>參與討論
hwqfj
硬件已定!
    想知道哪位高手設(shè)計類似系統(tǒng)時,是如何考慮到中斷的安排的。PID轉(zhuǎn)速控制,一般都要用到定時器來產(chǎn)生采樣周期中斷,如果在等待采樣周期過程中產(chǎn)生了其他中斷,要做何處理。
    有誰介紹一下阻塞和非阻塞編程的思想更好!


8樓: >>參與討論
peater
看看你的定時器
你用仿真器看看定時器中斷中的sampletime--;有沒有運行過。
你是不是忘了使能定時器了。
另外你的按鍵中斷程序要注意消抖。

9樓: >>參與討論
fys3000
太簡單了,你將按鍵設(shè)置為高級于時間中斷
太簡單了,你將按鍵設(shè)置為高級于時間中斷
在按鍵中斷增加“等待采樣周期結(jié)束”sampletime=0;
即可離開While(sampletime!=0);這句語句了,

Interrupt_Key  //鍵盤中斷程序
{
  //-------增加內(nèi)容
          sampletime=0;
   //---------------
   KEY=KeyScan(); //讀取鍵碼
}


10樓: >>參與討論
hwqfj
已解決!
錯誤在于:退出鍵盤中斷時,我把定時器的中斷標志也清除了。導(dǎo)致定時器中斷無法響應(yīng)!

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
終于找到了RC500的原版資料,可是沒密碼,暈,哪位有啊
咨詢各位大蝦LCD的事
單片機向PC送數(shù)
那些電機控制會用到單片機?
怎樣用示波器測晶振
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號