嵌入式:中斷原理及WDT驅動編程

  • 實驗目的

掌握中斷原理及WDT驅動編程

二、    實驗內容

 1)查看用戶手冊,編寫c程序1c.c,用c編寫子程序vic0_init, 完成vic0第27號中斷的初始化,子程序 wdt_init,完成wdt初始化,使得wdt每隔1秒發生中斷一次,子程序clear_int清除wdt和vic中斷,子程序led_init完成初始化led,led_on( char on)完成根據參數on的值控制led燈的亮滅。在彙編文件1s.S中編寫子程序cpu_int_on,使能cpu中斷,中斷處理子程序isr,調用led_on函數使4個led燈交替點亮和熄滅。在1c.c中編寫主程序_start,分別調用上述子程序,使得wdt每秒發生一次中斷,用來控制led燈交替點亮和熄滅。

 

2)編寫c程序 2c.c,完成上述第1題的功能。其中cpu_int_on在c文件中使用內嵌彙編編寫,其他子程序均使用c編寫。

提示:c中斷處理函數聲明:__attribute__((interrupt)) void isr( void )

 

三、    實驗儀器設備、工具軟件

1.PC微機。

2.ubuntu14.04 64位。

3. arm-linux-gcc,minicom,tftpd-hpa,uboot

四、    實驗過程和詳細設置步驟

1 .查看用戶手冊,編寫c程序1c.c,用c編寫子程序vic0_init, 完成vic0第27號中斷的初始化,子程序 wdt_init,完成wdt初始化,使得wdt每隔1秒發生中斷一次,子程序clear_int清除wdt和vic中斷,子程序led_init完成初始化led,led_on( char on)完成根據參數on的值控制led燈的亮滅。在彙編文件1s.S中編寫子程序cpu_int_on,使能cpu中斷,中斷處理子程序isr,調用led_on函數使4個led燈交替點亮和熄滅。在1c.c中編寫主程序_start,分別調用上述子程序,使得wdt每秒發生一次中斷,用來控制led燈交替點亮和熄滅。

 

 

 

 

 

 

 

 

 

 

 

代碼如下圖所示:

 

2. 編寫c程序 2c.c,完成上述第1題的功能。其中cpu_int_on在c文件中使用內嵌彙編編寫,其他子程序均使用c編寫。

提示:c中斷處理函數聲明:__attribute__((interrupt)) void isr( void )

 

代碼如下圖所示: