打印

主程序为什么停在这里不走了?

[复制链接]
1949|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
daliny|  楼主 | 2011-2-28 10:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我使用st公司的三合一板和一个触摸屏进行串口通信,通信方式为中断接收、查询发送,现在通信的接收和发送都可以进行了,传输的数据都正确,但在主程序里却无法看到接收中断接收的数据。通过设置断点发现主程序除了响应中断以为,就一直停在主程序的一条while语句上不再移动。
for( i = 0; i<15; i++)
  {
   USART_SendData(USART1 , TxBuffer0);  //发送显示"STM32"
    while(USART_GetFlagStatus(USART1, USART_FLAG_TXE)==RESET);
  }  
程序就停在while语句上,好像也应该,我查看状态寄存器SR的内容一直为C0,即TXE,TC一直处于置位状态,我试着改了好几次程序,也改不到点子上,不知该如何是好,希望得到各位高手和好友帮助指点,谢谢!
沙发
hzj8300| | 2011-2-28 10:31 | 只看该作者
USART_FLAG_TXE改为USART_FLAG_TC,试下

使用特权

评论回复
板凳
daliny|  楼主 | 2011-2-28 11:50 | 只看该作者
我试过,不知为什么,就改这一点,其它什么也没动。程序就乱套了,既不在主程序运行也不在中断程序运行在这两个地方设置断点都没有响应,按halt停止运行,程序停在/*******************************************************************************
* Function Name  : HardFaultException
* Description    : This function handles Hard Fault exception.
* Input          : None
* Output         : None
* Return         : None
*******************************************************************************/
void HardFaultException(void)
{
  /* Go to infinite loop when Hard Fault exception occurs */
  while (1)
  {
  }
}这个函数的while (1)语句
我这个板子的硬件会有问题吗?

使用特权

评论回复
地板
zxm19820916| | 2013-3-11 12:38 | 只看该作者
我查看状态寄存器SR的内容一直为C0,即TXE,TC一直处于置位状态.
我也遇到这个问题,芯片是STM32F051C8,使用USART1时,配置TC或TXE中断使能时,一开始就进中断函数,出不来了。不知道为什么,发送中断使能应该在哪个地方使用?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

25

帖子

1

粉丝