找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3184|回复: 2
打印 上一主题 下一主题
收起左侧

stm32f103c8t6串口能发不能收,进不去中断,请求大神帮助

[复制链接]
跳转到指定楼层
楼主
ID:360463 发表于 2020-4-27 13:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void uart_init(u32 bound){

  GPIO_InitTypeDef GPIO_InitStrue;
        USART_InitTypeDef USART_InitStrue;
        NVIC_InitTypeDef NVIC_InitStrue;
        
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA ,ENABLE);
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);
        
        GPIO_InitStrue.GPIO_Mode=GPIO_Mode_AF_PP;
        GPIO_InitStrue.GPIO_Pin=GPIO_Pin_2;
        GPIO_InitStrue.GPIO_Speed=GPIO_Speed_10MHz;
  GPIO_Init(GPIOA,&GPIO_InitStrue);//?
        
        GPIO_InitStrue.GPIO_Mode=GPIO_Mode_IN_FLOATING;
//        GPIO_InitStrue.GPIO_Mode=GPIO_Mode_IPU;
        GPIO_InitStrue.GPIO_Pin=GPIO_Pin_3;
        GPIO_InitStrue.GPIO_Speed=GPIO_Speed_10MHz;
  GPIO_Init(GPIOA,&GPIO_InitStrue);//?
        
        USART_InitStrue.USART_BaudRate=bound;
        USART_InitStrue.USART_HardwareFlowControl=USART_HardwareFlowControl_None;
        USART_InitStrue.USART_Mode=USART_Mode_Tx|USART_Mode_Rx;
        USART_InitStrue.USART_Parity=USART_Parity_No;
        USART_InitStrue.USART_StopBits=USART_StopBits_1;
        USART_InitStrue.USART_WordLength=USART_WordLength_8b;
        
        USART_Init(USART2,&USART_InitStrue);//USART2 init
        
        USART_Cmd(USART2,ENABLE);//USART2  enable
        
        USART_ITConfig(USART2,USART_IT_RXNE,ENABLE);
        
        NVIC_InitStrue.NVIC_IRQChannel=USART2_IRQn;
        NVIC_InitStrue.NVIC_IRQChannelCmd=ENABLE;
        NVIC_InitStrue.NVIC_IRQChannelPreemptionPriority=1;
        NVIC_InitStrue.NVIC_IRQChannelSubPriority=1;
        NVIC_Init(&NVIC_InitStrue);
        
        
}

void USART2_IRQHandler(void)                        //′®¿ú2ÖD¶Ï·tÎñ3ìDò
        {
        u8 Res;

        if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)  //
                {
                Res =USART_ReceiveData(USART2);        //
                USART_SendData(USART2,Res);
                                 
     }

}
int main(void)
{               
         u16 t;       unsigned char i = 0;
        u16 len;        
        u16 times=0;
        delay_init();                     //  
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //
        uart_init(9600);         //
         LED_Init();                             

         while(1)
        {
      delay_ms(1000);
      USART_SendData(USART2,0x36);                        
        
        }         
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:741259 发表于 2021-9-26 15:21 | 只看该作者
中断函数结尾加上这一条就可以了 USART_ClearITPendingBit(USART2,USART_IT_RXNE);  //清空接收中断标志位
回复

使用道具 举报

板凳
ID:836534 发表于 2021-9-26 16:57 | 只看该作者
时钟开启了吗?中断使能了吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表