最近做一个蓝牙控制的定时器因为控制的时候只发送一个字符,所以写的很简单但是在调用函数的时候,中断就不能进入了
(需要使用的时钟都打开了)
if(ch1!=ch){
if (ch=='a') {GPIO_ResetBits (GPIOE,GPIO_Pin_5);GPIO_ResetBits (GPIOD,GPIO_Pin_10);ch1=ch;}
else if (ch=='b') {GPIO_SetBits (GPIOE,GPIO_Pin_5);GPIO_SetBits (GPIOD,GPIO_Pin_10);ch1=ch;}
else if(ch=='m') {GPIO_SetBits (GPIOE,GPIO_Pin_5);GPIO_SetBits (GPIOD,GPIO_Pin_10);ch1=ch;delay_nms(24000);}
else if(ch=='+') { L1602_string(1,1,">"); L1602_string(2,1," ");ch1=ch;}
else if(ch=='-') { L1602_string(1,1," "); L1602_string(2,1,">");ch1=ch;}
else if(ch>=48&&ch<=57)
{
USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);
int z =CharToInt(ch);
GPIO_ResetBits (GPIOD,GPIO_Pin_10);
TimeDown(z);
GPIO_SetBits (GPIOD,GPIO_Pin_10);
L1602_Clear();
}
usart部分,没写的很规范
void USART1_IRQHandler(void)
{
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
{
ch= USART_ReceiveData(USART1); //接受数据
USART_SendData(USART1,ch);
}
中断能进入,也能读出接收到ch的值,就是倒计时时候或者使用延迟函数的时候,没法进入usart1中断
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>