吃完回来了,跟老弟打了个电话,他正处于事业的迷茫期,希望他早点走出这个状态。好了,现在已经晚上八点过十分了,希望十点前能把外部中断这个主题讲完。
外部中断的概念我还是稍微说下吧,就是你映射的外部中断引脚,如果检测到相应的脉冲边沿变化,就进入外部中断处理程序,处理完后跳出中断,等待下次边沿跳变。
现在来回顾下我们外部中断的结构图:
看到这张图,大家有没有一种直接写程序的冲动,呵呵,这说明大家都前面中断那章节学习的还不错,对寄存器的操作也已经有了自己的理解。
但外部中断寄存器这部分还是需要回顾下:
寄存器这里大家也再次明白了,其实现在也差不多可以写程序了,不过还是要回顾下外部中断的PIE映射表:
我们这次要使用的是外部中断1,也就是INT1.4
来来来,开始写程序,从最简单的GPIO.c文件开始,因为我们本次课程新增了一个外部中断输入触发端口,我选择了GPIO12,因为这个端口离LED最近,好画图。。
GPIO的操作流程我再复述一遍:
1、引脚规划;
2、通过复用寄存器设置相应引脚的功能;
3、输入滤波设置;
4、数字GPIO引脚方向设置;
5、内部上拉电阻使能或禁止;
好了,直接上程序了
void InitGpio(void)
{
EALLOW;
// Each GPIO pin can be:
// a) a GPIO input/output
// b) peripheral function 1
// c) peripheral function 2
// d) peripheral function 3
// By default, all are GPIO Inputs
GpioCtrlRegs.GPAMUX1.all = 0x0000; // GPIO functionality GPIO0-GPIO15
GpioCtrlRegs.GPAMUX2.all = 0x000