STM8s003 串口发送数据后不再接收 100
使用查询发送中断接收。上电后,使用工具给芯片发读取命令,芯片可以接收并通过校检,然后返回应答。一切正常。问题在于使用工具发第二条读取命令时,芯片无任何回应。仿真发现第二条...
使用查询发送中断接收。上电后,使用工具给芯片发读取命令,芯片可以接收并通过校检,然后返回应答。一切正常。问题在于使用工具发第二条读取命令时,芯片无任何回应。仿真发现第二条读取命令发给芯片的时候,芯片根本没进串口中断
void sendone(u8 temdata)
{
while((UART1->SR&0x80)==0);//发送寄存器数据是否转移完
UART1->CR2=0x00;//
UART1->DR=temdata;//要发送的数据
UART1->CR2=0x08;//
while((UART1->SR&0x40)==0);//发送结束
}
void senddata(u8 * TxBuffer1,u8 leng)
{
u8 TxPoint;
UART1_ITConfig(UART1_IT_RXNE_OR, DISABLE); //接收中断
delay_ms(3);
if(leng>=uSendMAX) leng = uSendMAX; //最多发送的字节
for(TxPoint=0;TxPoint<leng;TxPoint++)
{
sendone(TxBuffer1[TxPoint]);
}
UART1_ITConfig(UART1_IT_RXNE_OR, ENABLE); //接收中断
} 展开
void sendone(u8 temdata)
{
while((UART1->SR&0x80)==0);//发送寄存器数据是否转移完
UART1->CR2=0x00;//
UART1->DR=temdata;//要发送的数据
UART1->CR2=0x08;//
while((UART1->SR&0x40)==0);//发送结束
}
void senddata(u8 * TxBuffer1,u8 leng)
{
u8 TxPoint;
UART1_ITConfig(UART1_IT_RXNE_OR, DISABLE); //接收中断
delay_ms(3);
if(leng>=uSendMAX) leng = uSendMAX; //最多发送的字节
for(TxPoint=0;TxPoint<leng;TxPoint++)
{
sendone(TxBuffer1[TxPoint]);
}
UART1_ITConfig(UART1_IT_RXNE_OR, ENABLE); //接收中断
} 展开
3个回答
展开全部
看下芯片使用说明书吧。
我估计问题是:
1、读写切换延迟时间太少。
2、不是自动流控制,需要编程控制读写方向。
我估计问题是:
1、读写切换延迟时间太少。
2、不是自动流控制,需要编程控制读写方向。
追问
谢谢 不过不是你说的原因 已解决
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没记错的话是初始化中断标志位
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
请问是怎么解决的?我也遇到了一样的问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询