Untitled

 avatar
Michael
c_cpp
7 months ago
1.2 kB
1
Indexable
Never
/*
  PA5 中斷觸發方式: 下降沿+低電平
  PB2              上升沿
  PC3              下降沿 
  PD4              上升沿+下降沿

  PC 外部中斷軟件優先級: 2
  PE 外部中斷軟件優先級: 1
*/
#include "iostm8s208mb.h"
void main()
{
  // .....
  
  // main的軟件優先級生到最高3
  asm("sim"); 
  
  // 設定 PA PB PC PD 的中斷觸發方式
  EXTI_CR1=0xE4;
  
  //           PE PD PC PB
  // ITC_SPR2="01 11 00 11"
  // PC VECT5SPR[1:0]=00 PC 外部中斷軟件優先級: 2
  // PE VECT7SPR[1:0]=01 PE 外部中斷軟件優先級: 1
  ITC_SPR2=0x73;
  
  // PA5 在輸入模式下才有中斷功能
  // set PA5=input
  PA_DDR_DDR5=0;
  // set PA5 為弱上拉
  PA_CR1_C15=1;
  // 使能 PA5 的外部中斷功能
  PA_CR2_C25=1;

  // PB2 在輸入模式下才有中斷功能
  // set PB2=input
  PB_DDR_DDR2=0;
  // set PB2 為弱上拉
  PB_CR1_C12=1;
  // 使能 PB2 的外部中斷功能
  PB_CR2_C22=1;
  
  // PC3 在輸入模式下才有中斷功能
  // .......
  
  // PD4 在輸入模式下才有中斷功能
  // .......
  
  // main的軟件優先級降到最低0(這樣PABCD的中斷才會被處理)
  asm("sim");
  
}