LPC1114 定时中断进不去啊 求解
时间:10-02
整理:3721RD
点击:
*********************************************************************************************************/
#include "LPC11xx.h" /* LPC11xx外设寄存器 */
/*********************************************************************************************************
宏定义
*********************************************************************************************************/
#define BEEP (1ul << 3)
#define BEEPON() LPC_GPIO2->DATA |= BEEP /* 蜂鸣器关 */
#define BEEPOFF() LPC_GPIO2->DATA &= ~BEEP /* 蜂鸣器开 */
/*********************************************************************************************************
** Function name: myDelay
** Descriptions: 软件延时
** input parameters: 无
** output parameters: 无
** Returned value: 无
*********************************************************************************************************/
void myDelay(uint32_t ulTime)
{
uint32_t i;
i = 0;
while (ulTime--) {
for (i = 0; i < 5000; i++);
}
}
/*********************************************************************************************************
** Function name: timer0Init
** Descriptions: 32位定时器0初始化函数
** input parameters: 无
** output parameters: 无
** Returned value: 无
*********************************************************************************************************/
void timer0Init (void)
{
LPC_SYSCON->SYSAHBCLKCTRL |= (1 << 6); /* 初始化GPIO AHB时钟 */
LPC_SYSCON->SYSAHBCLKCTRL |= (1 << 16); /* 打开IOCON的配置时钟 */
LPC_IOCON->PIO3_3 &= ~0x07; /* 将P3.3初始化为GPIO功能 sck */
LPC_GPIO3->DIR =BEEPON() ; /* 将P3.3方向设置为输出 */
LPC_GPIO3->DATA = BEEPOFF(); /* 将P3.3设置为低电平 */
LPC_SYSCON->SYSAHBCLKCTRL |= (1 << 9); /* 打开定时器模块 */
LPC_TMR32B0->PR = 0x01; /* 设置分频系数 */
LPC_TMR32B0->MCR = 0x03; /* 设置MR0匹配后复位TC并产生中断*/
LPC_TMR32B0->MR0 = SystemFrequency/10000; /* 设置中断时间 100us */
LPC_TMR32B0->TCR =0X02;
LPC_TMR32B0->CTCR =0X00;
LPC_TMR32B0->IR =0x1;
LPC_TMR32B0->TCR =0x01;
NVIC_EnableIRQ(TIMER_32_0_IRQn); /*定时器中断使能*/
NVIC_SetPriority(TIMER_32_0_IRQn,2);
}
void TIMER_32_0_IRQnHander(void)
{
LPC_TMR32B0->IR=1;
LPC_GPIO3->DATA = BEEPON();
return;
}
/*********************************************************************************************************
** Function name: main
*********************************************************************************************************/
int main(void)
{
SystemInit(); /* 初始化目标板,切勿删除 */
timer0Init();
while (1);
}
/*********************************************************************************************************
End Of File
*********************************************************************************************************/
#include "LPC11xx.h" /* LPC11xx外设寄存器 */
/*********************************************************************************************************
宏定义
*********************************************************************************************************/
#define BEEP (1ul << 3)
#define BEEPON() LPC_GPIO2->DATA |= BEEP /* 蜂鸣器关 */
#define BEEPOFF() LPC_GPIO2->DATA &= ~BEEP /* 蜂鸣器开 */
/*********************************************************************************************************
** Function name: myDelay
** Descriptions: 软件延时
** input parameters: 无
** output parameters: 无
** Returned value: 无
*********************************************************************************************************/
void myDelay(uint32_t ulTime)
{
uint32_t i;
i = 0;
while (ulTime--) {
for (i = 0; i < 5000; i++);
}
}
/*********************************************************************************************************
** Function name: timer0Init
** Descriptions: 32位定时器0初始化函数
** input parameters: 无
** output parameters: 无
** Returned value: 无
*********************************************************************************************************/
void timer0Init (void)
{
LPC_SYSCON->SYSAHBCLKCTRL |= (1 << 6); /* 初始化GPIO AHB时钟 */
LPC_SYSCON->SYSAHBCLKCTRL |= (1 << 16); /* 打开IOCON的配置时钟 */
LPC_IOCON->PIO3_3 &= ~0x07; /* 将P3.3初始化为GPIO功能 sck */
LPC_GPIO3->DIR =BEEPON() ; /* 将P3.3方向设置为输出 */
LPC_GPIO3->DATA = BEEPOFF(); /* 将P3.3设置为低电平 */
LPC_SYSCON->SYSAHBCLKCTRL |= (1 << 9); /* 打开定时器模块 */
LPC_TMR32B0->PR = 0x01; /* 设置分频系数 */
LPC_TMR32B0->MCR = 0x03; /* 设置MR0匹配后复位TC并产生中断*/
LPC_TMR32B0->MR0 = SystemFrequency/10000; /* 设置中断时间 100us */
LPC_TMR32B0->TCR =0X02;
LPC_TMR32B0->CTCR =0X00;
LPC_TMR32B0->IR =0x1;
LPC_TMR32B0->TCR =0x01;
NVIC_EnableIRQ(TIMER_32_0_IRQn); /*定时器中断使能*/
NVIC_SetPriority(TIMER_32_0_IRQn,2);
}
void TIMER_32_0_IRQnHander(void)
{
LPC_TMR32B0->IR=1;
LPC_GPIO3->DATA = BEEPON();
return;
}
/*********************************************************************************************************
** Function name: main
*********************************************************************************************************/
int main(void)
{
SystemInit(); /* 初始化目标板,切勿删除 */
timer0Init();
while (1);
}
/*********************************************************************************************************
End Of File
*********************************************************************************************************/