找回密码
 注册
关于网站域名变更的通知
查看: 183|回复: 4
打印 上一主题 下一主题

stm32f103c8t6串口 usart1只能发送不能接受,是什么问题?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2021-12-16 14:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
需要通过串口用电脑控制单片机,用的是usart1,调了好几天,死活就是只能发送数据,不能接受数据,下面是我的配置函数和串口中断处理函数,求指导!!!
//串口引脚初始化
void Init_Usart(void)
{
GPIO_InitTypeDef GPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_USART1,ENABLE);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;               
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;         
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;      
GPIO_Init(GPIOA, &GPIO_InitStructure);                     

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;   
GPIO_Init(GPIOA, &GPIO_InitStructure);                  
}

//串口配置函数
void Usart_Configuration(uint32_t BaudRate)
{
USART_InitTypeDef USART_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);
USART_InitStructure.USART_BaudRate =BaudRate ;

USART_InitStructure.USART_WordLength = USART_WordLength_8b;

USART_InitStructure.USART_StopBits = USART_StopBits_1;

USART_InitStructure.USART_Parity = USART_Parity_No ;

USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
USART_Init(USART1, &USART_InitStructure);

USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);

USART_Cmd(USART1, ENABLE);

}

//串口中断处理函数
void USART1_IRQHandler(void)
{
uint8_t ReceiveDate;

if(!(USART_GetITStatus(USART1,USART_IT_RXNE)))

{
    USART_ClearITPendingBit(USART1,USART_IT_RXNE);  
    ReceiveDate=USART_ReceiveData(USART1);         
    printf("%d",(char *)ReceiveDate);               

    printf("\n\r");                                 
}  
}
//串口中断NVIC配置函数
void Init_NVIC(void)
{

NVIC_InitTypeDef NVIC_InitStructure;

#ifdef VECT_TAB_RAM

  NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);   
#else  

  NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);                                                  
#endif

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);

NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;           
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;   
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;         
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;            
NVIC_Init(&NVIC_InitStructure);                                 
USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);
}

调了好几天了,实在是高不出来了,求大神指导!!!!!!!

该用户从未签到

2#
发表于 2021-12-16 16:02 | 只看该作者
中断函数写错了,应该是进入中断之后清中断吧,为真才能进去

该用户从未签到

3#
发表于 2021-12-16 16:02 | 只看该作者
我看你的配置,除了RCC_APB2PeriphClockCmd基本没什么问题,你需要加上RCC_APB2Periph_AFIO,要不然IO口的AF功能用不了,而你串口IO需要用到AF功能,看下
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO|RCC_APB2Periph_GPIOA|RCC_APB2Periph_USART1, ENABLE);

测试接收前首先要保证MCU的RX脚能接收到正确的波形

该用户从未签到

4#
发表于 2021-12-20 17:51 | 只看该作者
先测试一下波形

该用户从未签到

5#
发表于 2021-12-20 19:04 | 只看该作者
配置没问题啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-7-28 09:14 , Processed in 0.109375 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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