新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 瑞薩單片機(jī)學(xué)習(xí)筆記(2)中斷的使用

瑞薩單片機(jī)學(xué)習(xí)筆記(2)中斷的使用

作者: 時間:2016-11-20 來源:網(wǎng)絡(luò) 收藏
  前面章節(jié)有提到通過設(shè)置option_byte來配置看門狗,我手上拿到的項目工程是沒有配置option_byte的,但是發(fā)現(xiàn)coder是在程序中見縫插針般插入以下代碼:

  WDTE = 0xac;

本文引用地址:http://butianyuan.cn/article/201611/318631.htm

  這個賦值操作就是喂狗,至今我也不知道option_byte的復(fù)位值是多少,從官網(wǎng)下載的數(shù)據(jù)手冊也沒有說明。其實可以通過一些方法來驗證,即不設(shè)置option_byte,不喂狗,看程序是否會不停復(fù)位。廢話說完,言歸正傳,我們用定時器來實現(xiàn)定時喂狗。

  這里用到的是78K0/FY-2系列單片機(jī),使用TM51作為定時器,需要配置的寄存器有:

  TCL51——選擇定時器時鐘頻率,是在外部硬件時鐘頻率的基礎(chǔ)上進(jìn)行分頻。

  TMC51——此寄存只有最高位TCEN51,開啟/關(guān)閉定時器。

  CR51——計數(shù)比較寄存器,當(dāng)計數(shù)寄存器TM51的值等于CR51時,會置位對應(yīng)中斷標(biāo)識位。此處的值不同于STC定時器的裝置值。

  TMMK51——TM51中斷屏蔽寄存器位

  TMPR51——TM51中斷優(yōu)先級寄存器位

  本人喜歡將某個部件的初始化代碼編寫為一個函數(shù)

  void init_TM51(void)

{

  TCL51 = 0x05;   //基于20MHz分頻為312.5KHz ,定時間隔為3.2us

  TMC51 = 0x80;  //打開定時器

  CR51 = 0xfa;  //0.8ms會產(chǎn)生中斷

  TMMK51 = 0;  //使能中斷

  TMPR51 =0;  //設(shè)置為高優(yōu)先級中斷

  EI();  //還記得前面添加的#pragma EI 嗎?總中斷使能,剛開始摸索的時候就是忘記添加此行代碼

}

中斷函數(shù):

#pragma interrupt INTTM51 inter_TM51 rb1

__interrupt void inter_TM51(void)

{

  //添加自己的代碼

}



評論


技術(shù)專區(qū)

關(guān)閉