新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 瑞薩單片機學習筆記(2)中斷的使用

        瑞薩單片機學習筆記(2)中斷的使用

        作者: 時間:2016-11-20 來源:網絡 收藏
          前面章節有提到通過設置option_byte來配置看門狗,我手上拿到的項目工程是沒有配置option_byte的,但是發現coder是在程序中見縫插針般插入以下代碼:

          WDTE = 0xac;

        本文引用地址:http://www.104case.com/article/201611/318631.htm

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

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

          TCL51——選擇定時器時鐘頻率,是在外部硬件時鐘頻率的基礎上進行分頻。

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

          CR51——計數比較寄存器,當計數寄存器TM51的值等于CR51時,會置位對應中斷標識位。此處的值不同于STC定時器的裝置值。

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

          TMPR51——TM51中斷優先級寄存器位

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

          void init_TM51(void)

        {

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

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

          CR51 = 0xfa;  //0.8ms會產生中斷

          TMMK51 = 0;  //使能中斷

          TMPR51 =0;  //設置為高優先級中斷

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

        }

        中斷函數:

        #pragma interrupt INTTM51 inter_TM51 rb1

        __interrupt void inter_TM51(void)

        {

          //添加自己的代碼

        }



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 威信县| 耒阳市| 永嘉县| 芷江| 汝城县| 渝北区| 阳东县| 黔西| 枝江市| 苗栗县| 岢岚县| 万荣县| 卢湾区| 南陵县| 禹州市| 嘉禾县| 高密市| 黄石市| 德化县| 南宁市| 茌平县| 阿鲁科尔沁旗| 谷城县| 滦平县| 扶风县| 陆川县| 潞城市| 建水县| 莱州市| 日土县| 罗源县| 田东县| 潞城市| 南安市| 扎囊县| 聂拉木县| 台东市| 卢湾区| 长泰县| 南阳市| 武威市|