最近一段时间,学习了一个新的
ARM(LPC1788),在keil下,使用库函数进行编程,发现,在库函数的帮助下,编程变得更加方便。今天,把这些天的一些经验,整理出来,发在这里,供大家查看,也有助于以后,我查看的方便。
第一个模块:GPIO中断。必要的代码如下:
- GPIO_IntCmd(0,1<<16|1<<15,1);//允许P0.16 P0.15下降沿GPIO中断
- NVIC_SetPriority(GPIO_IRQn,1);//设置中断优先级
- NVIC_EnableIRQ(GPIO_IRQn);//允许GPIO中断
这样就可以顺利的开启,GPIO中断了,必要的头文件,需要添加啊!
接下来就是中断处理函数了:
- void GPIO_IRQHandler(void)//GPIO中断处理函数
- {
- if (GPIO_GetintStatus(0,16,1))//如果为真,说明发生了P0.16的下降沿中断
- {
- 。。。。。。。。。。。。。。。//写上自己的中断处理子程序
- GPIO_ClearInt(0,1<<16);//清楚中断标志位
- }
- if(GPIO_GetIntStatus(0,15,1))//如果为真,说明发生的P0.15的下降沿中断
- {
- 。。。。。。。。。。。。。。。//写上自己的中断处理子程序
- GPIO_ClearInt(0,1<<15);//清楚中断标志位
- }
- }
第二个模块:Systick定时。初始化代码如下:- SYSTICK_InternalInit(1);//初始化1ms中断一次
- SYSTICK_IntCmd(ENABLE);//允许Systick中断
- SYSTICK_Cmd(ENABLE);//开始计时
Systick定时中断函数
- void SysTick_Handler(void)//Systick中断处理函数
- {
- SYSTICK_ClearCounterFlag();//清楚中断标志位
- 。。。。。。。。。//写上自己的中断处理程序
- }
第三个模块:UART中断,这个我感觉挺重要的。
- void UART2_int(void)//我用的是UART2中断
- {
- UART_CFG_Type lpc_u2;//定义一个结构体
- //CLKPWR_ConfigPPWR(CLKPWR_PCONP_PCUART2 ,ENABLE);//时钟使能,默认的UART2时钟是关闭的,可以不写,在下面的库函数中,会强行打开UART2时钟的。
中断处理函数:
- void UART2_IRQHandler(void)//UART2中断处理函数
- {
- uint32_t intsrc;
- uint32_t temp;
- uint8_t b;
- intsrc = UART_GetIntId(LPC_UART2);//获得中断类型
- temp = intsrc & UART_IIR_INTID_MASK;//和掩码相或
- if (temp == UART_IIR_INTID_RDA)//判断是否是接收中断
- {
- b = UART_ReceiveByte(LPC_UART2);//取出来数据缓冲区里面接收到的数据
- 。。。。。//写上自己定义的程序
- }
- if (temp == UART_IIR_INTID_THRE)//判断是发送中断
- {
- 。。。。。//写上自己定义的程序
- }
- }
至此,这些天,学习的这几个模块,就总结出来了。