新手上路
- 积分
- 46
- 金钱
- 46
- 注册时间
- 2020-7-28
- 在线时间
- 10 小时
|
问题描述如下:
想通过串口接收十六进制数据,用来控制LED灯的点亮与延时,中断函数如下:
void USART1_IRQHandler(void) //串口1中断服务程序
{
u8 c;
u8 a;
u8 ch=0;
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //接收中断
{
USART_RX_BUF[ch]=USART_ReceiveData(USART1);//(USART1->DR); //读取接收到的数据
USART_ClearITPendingBit(USART1,USART_IT_RXNE);
ch++;
ch&= 0xc8;
}
for(a=0;a<=200;a++ )
{
if(USART_RX_BUF[a]==0xFF ) //比较字符串
{
c=USART_RX_BUF[a+1];
USART_SendData(USART1,c);
while(USART_GetFlagStatus(USART1,USART_FLAG_TC) != SET);
GPIO_ResetBits(GPIOC,GPIO_Pin_1);
delay_ms(c);
GPIO_SetBits(GPIOC,GPIO_Pin_1);
}
USART_ClearFlag(USART1,USART_FLAG_TC);
}
}
串口发送接收如图:发送是后来为了查看c的值加的,为什么能够识别FF,然后LED变成了常量,延时C没有作用,返回值确是00,求大佬指点一下
|
-
串口发送接收
|