初级会员

- 积分
- 54
- 金钱
- 54
- 注册时间
- 2019-3-13
- 在线时间
- 8 小时
|
2金钱
[mw_shl_code=c,true]void DEBUG_USART2_IRQHandler(void)
{
uint8_t Temp2;
flag = RESET;
if(USART_GetITStatus(DEBUG_USART2,USART_IT_RXNE)!=RESET)
{
Temp2 = USART_ReceiveData(DEBUG_USART2);
D[l]=Temp2;
l++;
if(Temp2 == 0x0a)
{
flag=SET;
}
}
}[/mw_shl_code]
[mw_shl_code=c,true]int main(void)
{
char *str="01";
USART1_Config();
USART2_Config();
LED_GPIO_Config();
KEY_GPIO_Config();
printf( "串口printf函数测试\n" );
LED1_ON;
for(h=0;h<10;h++)
{
D[h]=0;
}
while(1)
{
if( Key_Scan(KEY1_GPIO_PORT,KEY1_GPIO_PIN) ==KEY_ON )
{
D[h]=0;
Usart_SendStr(DEBUG_USART2,(uint8_t*)str);
LED1_TOGGLE;
LED3_TOGGLE;
while (flag != SET)
{
}
for(h=0;h<10;h++)
{
printf("%c",D[h]);
}
printf("\n");
}
}[/mw_shl_code]
我个人判断,是因为串口没有接收数据,所以数组没有更新。
|
最佳答案
查看完整内容[请看2#楼]
自己已发现问题,原因是在中断服务函数里,数组D[l]中的“l”没有清零,导致数据接着原有的数组继续存进去。而我的打印数组只限10位,没有发现数组的变化,导致一直找不出问题。
|