
INTERRUPT_HANDLER(UART1_RX_IRQHandler, 18) { uint8_t receData = 0; if(ComuData.Chan==0) { receData = (uint8_t)UART1->DR; ComuData.Data[ComuData.Len++]= receData; // if(ComuData.Count >= 6) // { // ComuData.Count = 0; // ComuData.Len = 6; // } } }//异常地址的位置 void cmd_Handle(void) { uint8_t m=0; // uint8_t data[6]={0x01,0x10,0x11,0x02,0x8D,0x8C}; // Crc_Vrfy_String_TE(data, 6); if(ComuData.Len == 6 && 0x01 == Crc_Vrfy_String_TE(&ComuData.Data[0],ComuData.Len) ) { ComuData.Chan =1; //程序可以正常的接收字符,并符合CRC16效验 } else ComuData.Chan =0; if(ComuData.Chan == 1) { GPIOD->ODR |= GPIO_PIN_7;//transmit for(m=0;m< 6;) { UART1->SR &=0xBF;//clear TC bit while((UART1->SR &0x80)!= 0x80);//wait data sent to 移位寄存器里 UART1->DR = ComuData.Data[m]; m = m+1;//程序走到这里就中断了 m++;指令也不行,把m++写到for循环里面也不行,停止时就跑到接收中断函数结束处 while ((UART1->SR & 0x40)!=0x40);//等待移位寄存器中的数据发送发成 //Sys_Delay(1); } ComuData.Chan=2; } } 那位大神知道这是怎么回事吗? |
STM8S003无法检测到引脚电平
STM8 @svlreg 问题
STM8AF62XX+L99PM62GXP LIN通讯的电路原理图有吗?官网提供了一套软件,没找到对应的原理图,请大家指教一下
求一个STM8S207例程
初次接触STM8,请问在STVD中,为什么这个Struct会报错
STMS005K6T6 如何采集内部参考电压。
stm8s003 adc中断和通道切换的问题
adc施密特触发器stm8
stm8l051f3 TSSOP20 封装,待机模式下,2天后,电流突然增加到140UA
STM8S用STVP烧录怎么加密?
评分
查看全部评分
m=m+1 通过在中断中禁止uart1的接收使能 UART1->CR2 &= ~0x20;//禁止接收中断 可以解决,能够正确的收发一帧数据,但是在数据处理完后 UART1->CR2 |= 0x20 接收使能位也不置1,而且进不了接收中断函数,你清楚这是为什么吗? 接收完一帧数据IDLE=1