关于LPC1768设计秒表的一些问题
新手求教QaQ..最近在做一个课程设计,就是用LPC1768来设置一个秒表(精度是0.01s)
我的思路是用Systick节拍器来计时
但遇到了一点问题,所以来请教一下各位大神

问题1:时间单位转换问题,我刚开始的时候是用If语句判断,然后发现不行,然后就在systick中断处理函数里处理,然后发现还是不行(现实中过几秒,显示屏上才加1秒),请问下如何解决这个问题?
问题2:关于中断问题,我是设置了两个按键中断,然后有一个按键按下去没反应,另一个按键是按多次才反应一次或者一按下去反应两次,请问下该如何解决?
主要代码如下:
int main(void)
{
char string[50],number[30];
uint16_t m,se,ms;
SystemInit();
EINT1_init(); // set P2.11 as EINT1 -- KEY1
EINT2_init(); // set P2.12 as EINT1 -- KEY2
lcd_Initializtion(); // init lcd
m = 0;
se = 0;
ms = 0;
while(1)
{
sprintf(number,"My id:1400210313");
LCD_write_english_string(20,50,number,Cyan,Blue);
sprintf(string,"current time:%dm-%ds-%d",m,se,ms);
LCD_write_english_string(20,100,string,Cyan,Blue);
if((Eint1_Count % 2) == 1) //开始、清零
{
LCD_write_english_string(20,150," ",White,Blue);
LCD_write_english_string(20,150,"start",Cyan,Blue);
SysTick_Config(Fcclk/100); // SysTick使用CCLK时钟计数,每10ms产生一次中断
ms = TimeTick * 10;
}
else
{
SysTick->CTRL &= 0x00;
m = 0;
se = 0;
ms = 0;
}
if((Eint2_Count % 2)== 1) //暂停、继续
{
SysTick->CTRL &= 0x00;
LCD_write_english_string(20,150," ",White,Blue);
LCD_write_english_string(20,150,"stop",Cyan,Blue);
}
else
{
SysTick->CTRL |= 0x01;
}
if(ms == 1000)
{
// ms = 0;
se++;
}
if(se == 60)
{
se = 0;
m++;
}
sprintf(string,"current time:%dm-%ds-%dms",m,se,ms);
LCD_write_english_string(20,100,string,Cyan,Blue);
//__WFE();
__WFI(); // 等待中断
}
}
...全文
相关推荐
LPC1768中文手册完整版
- **3级流水线**:这种架构设计使得LPC1768能够高效地执行指令序列,提高了处理器的吞吐量。
LPC1768中文完全手册
**LPC1768中文完全手册**LPC1768是一款由NXP(原飞利浦半导体)推出的基于ARM Cortex-M3内核的微控制器,被广泛应用于嵌入式系统设计。
LPC1768全部程序例程
【LPC1768 全部程序例程】涵盖了微控制器LPC1768在各种常见应用中的实例代码,这些例程是基于LPC1768微控制器的各种功能模块,包括UART(通用异步收发传输器)、PWM(脉宽调制)、IIC
LPC1768的spi例程
LPC1768是NXP公司生产的一款基于Cortex-M3内核的微控制器,广泛应用在嵌入式系统设计中。
lpc1768全部例程
通过学习和实践这些例程,开发者可以快速掌握LPC1768的使用方法,从而能够高效地开发自己的嵌入式项目。同时,这些例程也可以作为模板,帮助开发者解决实际项目中遇到的问题,节省大量的时间和精力。


单片机/工控
