USART_ITConfig(USART1,USART_IT_TEX ,ENABLE);使能串口发不了数

2019-03-23 15:24发布

USART_Init(USART1, &USART_InitStructure);

  USART_Cmd(USART1, ENABLE);
  USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);
// USART_ITConfig(USART1,USART_IT_TEX ,ENABLE);
//不使能这个串口正常,使能就进不了while(1){};??

int main(void)
{
   uint8_t a[]="start";
    NVIC_Config();
        USART1_Config();
    putstr(a);
        putstr("good");
          while(1)
        {       
          putstr("good");
          } ;

}
//中断函数
void putch(uint8_t ch)
{
    USART_SendData(USART1, ch); /*发送一个字符函数*/

   /* Loop until the end of transmission */
    while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);/*等待发送完成*/
}
void putstr(uint8_t *str)
{
   uint16_t i;
   for(i=0;str!='';i++)
   {
          putch(str);
   }
   USART_SendData(USART1, ' '); /*发送一个字符函数*/
   while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);/*等待发送完成*/
   USART_SendData(USART1, ' '); /*发送一个字符函数*/
   while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);/*等待发送完成*/
}
void USART1_IRQHandler(void)
{
    //处理接收到的数据
    if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
    {
               USART_ClearITPendingBit(USART1, USART_IT_RXNE);
        //temp =        USART_ReceiveData(USART1);
        putstr(sdata);
    }
    //发送中断
    if (USART_GetITStatus(USART1, USART_IT_TXE) != RESET)
    {           
        USART_ClearITPendingBit(USART1,USART_IT_TXE);  
  }

}
这是什么原因呢?? 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
sblpp
1楼-- · 2019-03-23 15:59
 精彩回答 2  元偷偷看……
liubo1
2楼-- · 2019-03-23 21:06
这句写错了USART_ITConfig(USART1,USART_IT_TEX ,ENABLE) ;   应该是                                                             USART_ITConfig(USART1,USART_IT_TXE ,ENABLE);其他地方有没有错我就不知道了
rgbfnso
3楼-- · 2019-03-23 22:53
IO配置好了,开启TXE中断就进不去main,为什么??这样说我就只开启了接收RXNE中断也可以收发数据,真奇怪
rgbfnso
4楼-- · 2019-03-24 00:36
 精彩回答 2  元偷偷看……
sblpp
5楼-- · 2019-03-24 04:51
时钟配置
Li_Lei
6楼-- · 2019-03-24 09:15
清除中断标记

一周热门 更多>