查看: 1588|回复: 0

[求助] 关于YL-KL26Z的外部引脚中断问题

[复制链接]

该用户从未签到

2

主题

4

帖子

0

新手上路

Rank: 1

积分
36
最后登录
2016-8-13
发表于 2016-2-17 17:47:50 | 显示全部楼层 |阅读模式
因为YL-KL26Z开发板给的例程用的是KL25的头文件,虽然说KL25与KL26是兄弟,但是KL26用KL25的头文件开发毕竟不是我的风格,所以我用了KL26的头文件,首先上代码,因为完全是寄存器控制,写的全部是寄存器,望 仁者见仁智者见智:

我认为代码没有问题,但是烧写在开发板上却失败,并没有出现按一下键就反转一次LED的现象,求人指点,哪里错了?

#include "MKL26Z4.h"
int main()
{
       SIM->SCGC5 |= (SIM_SCGC5_PORTB_MASK
                               | SIM_SCGC5_PORTD_MASK
                               | SIM_SCGC5_PORTA_MASK);            //开启A,B,D时钟
   
       PORTB->PCR[18] &= ~PORT_PCR_MUX_MASK;
       PORTB->PCR[18] |= PORT_PCR_MUX(1);
       PORTB->PCR[19] &= ~PORT_PCR_MUX_MASK;
       PORTB->PCR[19] |= PORT_PCR_MUX(1);
       PORTD->PCR[1] &= ~PORT_PCR_MUX_MASK;
       PORTD->PCR[1] |= PORT_PCR_MUX(1);                    //配置三个LED为GPIO功能
   
       PTD->PDDR |= (1 << 1);
       PTB->PDDR |= ((1 << 18)|(1 << 19));                     //配置LED为输出方向
   
       PTD->PDOR |= (1 << 1);
       PTB->PDOR |= ((1 << 18)|(1 << 19));                     //配置LED为高电平,使其灭

       PORTD->PCR[6] &= ~PORT_PCR_MUX_MASK;
       PORTD->PCR[6] |= PORT_PCR_MUX(1);                   // 按键Key3,配置为GPIO功能
       PORTA->PCR[4] &= ~PORT_PCR_MUX_MASK;
       PORTA->PCR[4] |= PORT_PCR_MUX(1);                   // 按键Key4,配置为GPIO功能
   
       PTD->PDDR &= ~(1 << 6);                     
       PTA->PDDR &= ~(1 << 4);                                     //配置按键为输入功能
   
       PORTD->PCR[6] |= ~PORT_PCR_IRQC_MASK;
       PORTD->PCR[6] |= PORT_PCR_IRQC(11);
       PORTA->PCR[4] |= ~PORT_PCR_IRQC_MASK;
       PORTA->PCR[4] |= PORT_PCR_IRQC(11);                //配置按键的中断触发方式:跳变沿触发中断
   
       NVIC_EnableIRQ(PORTA_IRQn);
       NVIC_SetPriority(PORTA_IRQn,4);
       NVIC_EnableIRQ(PORTC_PORTD_IRQn);
       NVIC_SetPriority(PORTC_PORTD_IRQn,6);                //开中断以及配置优先级
   
       PORTA->ISFR |= (1 << 4);                     
       PORTD->ISFR |= (1 << 6);                                    //清空标志位
   
       while(1)
       {
              ;                                                                   //等待。。。
       }
}

void PORTA_IRQHandler()
{
       if((PORTA->ISFR) & (1 << 4))
       {  
              PORTA->ISFR |= (1 << 4);
              PTB->PTOR |= (1 << 18);
       }   
}

void PORTC_PORTD_IRQHandler()
{
       if((PORTD->ISFR) & (1 << 6))
       {
             PORTD->ISFR |= (1 << 6);
             PTB->PTOR |= (1 << 19);
       }   
}
我知道答案 目前已有0人回答
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-7-24 12:38 , Processed in 0.079053 second(s), 20 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表