|
发表于 2011-9-18 13:30:56
|
显示全部楼层
回复【2楼】yuyu87 雨
-----------------------------------------------------------------------
我也遇到这样的问题了,但是,即使我跟楼主的配置方式相同,也还是无法进入中断,郁闷中。。。。
#include "LPC11xx.h" /* LPC11xx 外设寄存器定义 */
#include "gpio.h"
#include "7289.h"
#include "timer16.h"
#define LED_DIR_OUT() LPC_GPIO[2]->DIR |= 0X0007
#define LED_OFF() LPC_GPIO[2]->MASKED_ACCESS[(7<<0)] = 0X0007
#define LED_ON() LPC_GPIO[2]->MASKED_ACCESS[(7<<0)] = 0
//#define KEY_DIR_IN() GPIOSetDir( 2, 3, 0 )
#define BEEP_DIR_OUT() GPIOSetDir( 1, 8, 1 )
#define BEEP_ON() GPIOSetValue( 1, 8, 0 )
#define BEEP_OFF() GPIOSetValue( 1, 8, 1 )
#define PRESS_KEY (LPC_GPIO[2]->RESERVED0[(1<<3)])
uint16_t TIMER16B0_CTR;
/*********************************************************************************************************
** Function name: DelayMS
** Descriptions: 毫秒级延时
** input parameters: dly - 延时时间
** output parameters: 无
** Returned value: 无
*********************************************************************************************************/
void DelayMS(uint32_t dly)
{
uint32_t i;
while (dly-- > 0) {
for(i = 5000; i > 0; i--); /* 延时 */
}
}
/*********************************************************************************************************
** Function name: Io_Init
** Descriptions: 初始化IO口方向
** input parameters: 无
** output parameters: 无
** Returned value: 无
*********************************************************************************************************/
void Io_Init()
{
LPC_IOCON->RESET_PIO0_0 |= 0x01;
LPC_IOCON->PIO0_7 |= 0x08;
LPC_IOCON->PIO0_6 |= 0x08;
BEEP_DIR_OUT();
KEY_DIR_IN();
LED_DIR_OUT();
DIO_DIR_OUT();
CLK_DIR_OUT();
CS_DIR_OUT();
KEY_DIR_IN();
LPC_TMR16B0->TCR = 0X01; /*为1 时,定时器/计数器和分频计数器使能计数。为0 时,计数器禁能*/
LPC_TMR16B0->TC = 0X00; /* 设置定时器计数初值 */
LPC_TMR16B0->MR0 = 10240; /* 设置定时器计数匹配值 */
LPC_TMR16B0->PR = 1023; /* 预分频 */
LPC_TMR16B0->MCR = 0X03; /* 当MR0与TC值匹配时产生中断,MR0与TC值匹配将使TC复位 */
LPC_TMR16B0->CTCR= 0x00; /* 工作在定时器模式 */
LPC_SYSCON->SYSAHBCLKCTRL |= (1<<7); /* 使能16位计数器/定时器0的时钟 */
//LPC_SYSCON->PDRUNCFG |= (1 << 5);
NVIC_EnableIRQ(TIMER_16_0_IRQn);
}
/*********************************************************************************************************
** Function name: TIMER16_0_IRQHandler
** Descriptions: 16位定时器/计数器0
** input parameters: 无
** output parameters: 无
** Returned value: 无
*********************************************************************************************************/
void TIMER16_0_IRQHandler(void)
{
if((LPC_TMR16B0->IR&0X01)==0X01)
{
LPC_TMR16B0->IR = 0X01; /* 清除中断标志 */
BEEP_ON();
TIMER16B0_CTR++;
}
}
/*********************************************************************************************************
** Function name: main
** Descriptions: SSP主机例程。K2 Cortex开发板1的SPI0作主机,另外一块K2 Cortex开发板2的SPI0作从机,
** 分别对接两块开发板的P0.2, P0.6, P0.8, P0.9引脚,先启动从机程序后启动主机程序,
** 则当数据收发正确时,可观察到蜂鸣器鸣叫两声(发送和接收各一次)
** input parameters: 无
** output parameters: 无
** Returned value: 无
*********************************************************************************************************/
int main(void)
{
SystemInit();
GPIOInit();
Io_Init();
zlg7289Init();
while(1)
{
//zlg_7289_DisNum(TIMER16B0_CTR);
}
} |
|