你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F302RC的PC4/PC5管脚复用串口1,数据只能发不能收

[复制链接]
@LARRY@ 提问时间:2018-8-29 17:56 /
代码如下,更换管脚为PA9/PA10,数据收发OK;但是复用为PC4/PC5管脚后只能发送,不能接收;求解
/************************************************************************/
void USART1_InterruptConfig()
{
        NVIC_InitTypeDef   NVIC_InitStructure;
        /* 设置NVIC参数 */
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
        NVIC_InitStructure.NVIC_IRQChannel=USART1_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;        
        NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;  
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;        
        NVIC_Init(&NVIC_InitStructure);        
        USART_ITConfig(USART1, USART_IT_RTO, ENABLE);//使能或者失能接收超时的串口中断
        USART_ClearFlag(USART1,USART_FLAG_TC);
        USART_SetReceiverTimeOut(USART1, 3);                        //设定超时时间
        USART_ReceiverTimeOutCmd(USART1, ENABLE);                //使能超时机制
}
/************************************************************************/
void STM_EVAL_COM1_Init(USART_InitTypeDef* USART_InitStruct_)
{
  GPIO_InitTypeDef GPIO_InitStructure;
  RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC, ENABLE);
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_SYSCFG, ENABLE);
        
  GPIO_PinAFConfig(GPIOC, GPIO_PinSource4, GPIO_AF_7);
  GPIO_PinAFConfig(GPIOC, GPIO_PinSource5, GPIO_AF_7);

  //TX-RX
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;               
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
  GPIO_Init(GPIOC, &GPIO_InitStructure);        
        
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
  GPIO_Init(GPIOC, &GPIO_InitStructure);
        
  USART_Init(USART1, USART_InitStruct_);
  USART1_InterruptConfig();
  USART_Cmd(USART1, ENABLE);
}
/*************************************************************************/
void USART_COM1_Init()
{
  USART_InitTypeDef USART_InitStructure;
  USART_InitStructure.USART_BaudRate = 115200;
  USART_InitStructure.USART_WordLength = USART_WordLength_8b;
  USART_InitStructure.USART_StopBits = USART_StopBits_2;
  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_DeInit(USART1);
  STM_EVAL_COM1_Init(&USART_InitStructure);
}
使用电脑的串口调试助手,配置的也是两个停止位.上述代码修改复用端口为PA9,PA10数据收发OK,使用了STM32CubeMax验证后结果相同,PA9\PA10收发OK,PC4/PC5只能发不能收。纠结,,感觉PC5管脚配置问题(官方的或需要开启他的配置),但是关于管脚复用的寄存器应该就那三个GPIOx_AFRL、GPIOx_AFRH、GPIOx_MODER.昨天直接填的寄存器试了下也不行.


收藏 评论1 发布时间:2018-8-29 17:56

举报

1个回答
@LARRY@ 回答时间:2018-8-30 18:51:28
大家好,目前问题已经解决,为硬件问题所导致

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2 结帖奖励

查看全部评分

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版