飞思卡尔MKL05Z32VLF4单片机实现外部引脚中断的问题(已解决)
本帖最后由 FSL_TICS_ZJJ 于 2014-1-27 15:36 编辑我试验的是PTB6即irq2方法是使用的pe工具生成的用内部32k时钟的最小程序,别的模块没有添加,导入到iar下后,改动vectors.c中的portb对应的
(tIsrFunc)&Cpu_Interrupt, /* 0x2C0x000000B0 - ivINT_LPTimer unused by PE */
(tIsrFunc)&Cpu_Interrupt, /* 0x2D0x000000B4 - ivINT_Reserved45 unused by PE */
(tIsrFunc)&Cpu_Interrupt, /* 0x2E0x000000B8 - ivINT_PORTA unused by PE */
(tIsrFunc)& portb_isr /* 0x2F0x000000BC - ivINT_PORTB unused by PE */
最后一行,然后定义了portb_isr();函数,在主函数中
PORTB_PCR6=PORT_PCR_MUX(1)|PORT_PCR_IRQC(0x9)&(~PORT_PCR_PE_MASK)&(~PORT_PCR_PS_MASK);
定义了portb6引脚设置成初始状态低电平,上升沿触发,然后加上
NVIC_ICPR |= 1 << (31%32);
NVIC_ISER |= 1 << (31%32);
但是,我用的板子上的小灯做位指示,结果证明不能启动。求解,应该还设置什么寄存器? 自己顶一下,有关定时器的设置是在pe工具中就做好,还是像我这样呢,, 请问你指的不能启动,是什么意思。
是无法进入main函数,还是无法进入中断服务函数,或是其他? qqliyunpeng 发表于 2013-12-23 10:09
自己顶一下,有关定时器的设置是在pe工具中就做好,还是像我这样呢,,
其实直接PE一步到位就行了,否则到了IAR下还是需要自己去写寄存器配置等。
推荐你先看下如何建立PE新工程以及添加新模块。
在新建PE工程添加模块时就把需要的模块都设置好并生成代码。
在看下如何在IAR中植入PE代码
按照帖子中步骤设置完,即可实现PTB6外部中断的功能了。 楼主请注意一点,Kinetis L系列是只有PORTA口和PORTD口支持外部中断输入的,而楼主代码中vectors.c和vectors.h头文件中后面关于中断向量表的注释是K系列的,所以楼主换成PORTA口就可以了,至于中断号,建议直接参考KL05的头文件开头部分。 FSL_TICS_Robin 发表于 2013-12-25 10:53
请问你指的不能启动,是什么意思。
是无法进入main函数,还是无法进入中断服务函数,或是其他? ...
就是小灯不亮, FSL_TICS_Robin 发表于 2013-12-25 10:54
其实直接PE一步到位就行了,否则到了IAR下还是需要自己去写寄存器配置等。
...
那有这么个问题,如果,你已经做好了一个工程,想着在在原来的基础上添加个传感器,那改程序的可能性就成0了吧,还要重新的去用pe去生成工程?貌似这样有点麻烦了 FSL_TICS_Robin 发表于 2013-12-25 11:11
推荐你先看下如何建立PE新工程以及添加新模块。
在新建PE工程添加模块时就把需要的模块都设置好并生成代码 ...
恩,谢谢,,我看了,挺好的说的,学习了 FSL_FAE_JiCheng 发表于 2013-12-25 11:30
楼主请注意一点,Kinetis L系列是只有PORTA口和PORTD口支持外部中断输入的,而楼主代码中vectors.c和vector ...
我用pe工具生成了一个工程,结果成功了,PTB6/IRQ_2/LPTMR0_ALT3这么个引脚,有中断的。 qqliyunpeng 发表于 2013-12-25 15:38
那有这么个问题,如果,你已经做好了一个工程,想着在在原来的基础上添加个传感器,那改程序的可能性就成 ...
那就参考着PE生成的代码,手动添加到你的工程里吧。 FSL_TICS_Robin 发表于 2013-12-25 17:28
那就参考着PE生成的代码,手动添加到你的工程里吧。
呵呵呵,这个方法可行,
页:
[1]