在线时间364 小时
UID3071902
注册时间2017-1-11
NXP金币0
TA的每日心情 | 衰 2019-1-19 16:32 |
---|
签到天数: 4 天 连续签到: 1 天 [LV.2]偶尔看看I
金牌会员
 
- 积分
- 1267
- 最后登录
- 2022-3-31
|
本帖最后由 lamb8059 于 2017-4-17 14:47 编辑
目的:IRQ 下拉0V時進入中斷,BLUE LED Toggle() FRDM-KE04Z的IRQ跟RST複用,用板上RST button切換LED狀態
目前狀況:仿真到IRQ->SC |= IRQ_SC_IRQPDD_MASK | (~IRQ_SC_IRQEDG_MASK) | IRQ_SC_IRQPE_MASK ; 時跳到default_isr、
IRQ pin拉0V時Green LED也熄滅,Blue LED也沒有Toggle
程序如下
int main (void)
{
sysinit();
SIM->SOPT |= SIM_SOPT_CLKOE_MASK | (0<<SIM_SOPT_BUSREF_SHIFT);
GPIO_Init(GPIOA, GPIO_PTB3_MASK, GPIO_PinOutput);
FGPIOA->PSOR = GPIO_PTB3_MASK;
GPIO_Init(GPIOA,GPIO_PTC4_MASK,GPIO_PinOutput);
FGPIOA->PCOR = GPIO_PTC4_MASK;
ICS->C2 = (ICS->C2 & ~(ICS_C2_BDIV_MASK)) | ICS_C2_BDIV(0);
SIM->SOPT &= ~( SIM_SOPT_RSTPE_MASK );
IRQ->SC |= IRQ_SC_IRQPDD_MASK | (~IRQ_SC_IRQEDG_MASK) | IRQ_SC_IRQPE_MASK ;
NVIC_EnableIRQ(IRQ_IRQn);
NVIC_SetPriority(IRQ_IRQn,30); //30= 8 * (7 % 4) + 6
while (1);
}
void IRQ_IRQHandler(void)
{
uint32_t aa;
GPIO_Toggle(GPIOA, GPIO_PTB3_MASK);
for(aa=0;aa<240000;aa++);
IRQ->SC |= IRQ_SC_IRQACK_MASK;
}
目前有幾個疑問
1. isr.h要isr.h要 #undef VECTOR_023 #define VECTOR_023 IRQ_Isr 嗎? 但是沒有IRQ.c之類的文件設置IRQ_Callback
2.要怎麼設治才能進入IRQ外部中斷,RST引腳改為IRQ之後,還要設置哪些寄存器,IRQ_SC、NVICISER、NVICISPR?
3.KL26的ISPR公式是8*(IRQ mod 4)+6 ,K60卻是 8 * (85 % 4) + 4 ,KE04的是跟KL26一樣嗎?
KEXX_DRIVERS_V1.2.1_DEVD.zip裡面沒有看到用IRQ的例程唉
|
|