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);  
  }

}
这是什么原因呢?? 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。