STM 8s 外部中斷寄存器沒法寫入

 雖說單片機開發就是對手冊的研究,可是開發過程當中,仍是要作些筆記的,方便之後注意那些坑.函數

工做要求因此接觸了一下STM328s00f3這個芯片,配置外部中斷的時候遇到了一點問題spa

PS:IAR這個開發軟件真很差用.調試

外部中斷:code

配置PD口的外部中斷是,發現EXTI_CR1寄存器沒法寫入.因而開始尋找緣由.orm

 

在配置EXTI_CR1寄存器時看見"blog

這些位僅在CC寄存器的I1I0位都爲1(級別3)時才能夠寫入。這些位定義端口D
中斷觸發位

"這句話,可是CC寄存器要如何配置呢?ip

 首先來看看這個寄存器的描述,默認值是符合前面的要求的,而且I1 和 I0是rw的,因而嘗試寫入,可是沒有找到地址的相關說明.ci

 1 #ifdef __cplusplus
 2 extern "C"
 3 {
 4 #endif
 5 
 6   __intrinsic void __enable_interrupt(void);     /* RIM */
 7   __intrinsic void __disable_interrupt(void);    /* SIM */
 8 
 9   __intrinsic __istate_t __get_interrupt_state(void);
10   __intrinsic void       __set_interrupt_state(__istate_t);
11 
12   /* Special instruction intrinsics */
13   __intrinsic void __no_operation(void);         /* NOP */
14   __intrinsic void __halt(void);                 /* HALT */
15   __intrinsic void __trap(void);                 /* TRAP */
16   __intrinsic void __wait_for_event(void);       /* WFE */
17   __intrinsic void __wait_for_interrupt(void);   /* WFI */
18 
19   /* Bit manipulation */
20   __intrinsic void __BCPL(unsigned char __near *, unsigned char);
21   __intrinsic void __BRES(unsigned char __near *, unsigned char);
22   __intrinsic void __BSET(unsigned char __near *, unsigned char);
23 
24 #ifdef __cplusplus
25 }
26 #endif

後來在庫文件中找到了__enable_interrupt(); 只須要在這個函數以前配置外部中斷寄存器就行了.開發

    Fun_HardInit_Hall(); //hall硬件初始化
    // 開總中斷
    __enable_interrupt();

哈哈,有點水哈   沒有從寄存器說明真正的緣由,之後查到了,再更新吧,IAR也沒有寄存查看的功能SWIM的調試調試真的好難用.get

相關文章
相關標籤/搜索