论坛元老
 
- 积分
- 3772
- 金钱
- 3772
- 注册时间
- 2015-4-26
- 在线时间
- 765 小时
|
1金钱
我用软件仿真没有问题,烧到单片机上总是最后一个字节不发
if(USART_GetITStatus(USART2,USART_IT_TXE)!=RESET) //发送数据寄存器空中断
{
tx_num++;
if(tx_num<tx_nums)
{
USART_SendData(USART2,tx_dat[tx_num]);
}
else
{
//while(USART2->SR&(1<<6));
tx_num=0; flag_systick_tx=1;
RS485_RX;
USART_ITConfig(USART2,USART_IT_TXE,DISABLE);
}
}
if(USART_GetITStatus(USART2,USART_IT_TC)!=RESET)
{
USART_ClearITPendingBit(USART2,USART_IT_TC);
USART_ITConfig(USART2,USART_IT_TC,DISABLE);
}
以上是中断函数,发送触发示意:
tx_dat[10]={1,2,3,4,5,6};
tx_num=0;tx_nums=5;
USART_SendData(USART2,tx_dat[0]);
USART_ITConfig(USART2,USART_IT_TXE,ENABLE);
应该发送 1 2 3 4 5 结果总是发到4就不发了 求助大神帮看
|
最佳答案
查看完整内容[请看2#楼]
发送完成中断再使能接收[mw_shl_code=c,true]if(USART_GetITStatus(USART2,USART_IT_TXE)!=RESET) //发送数据寄存器空中断
{
tx_num++;
if(tx_numSR&(1
|