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

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

[复制链接]
甜心男爵 提问时间:2018-8-29 14:23 /
悬赏5ST金币未解决
本帖最后由 甜心男爵 于 2018-8-30 18:48 编辑

代码如下,更换管脚为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);
}


收藏 评论11 发布时间:2018-8-29 14:23

举报

11个回答
wenyangzeng 回答时间:2018-8-29 14:45:06
STM_EVAL_COM1_Init()在USART1_Interrupt()函数前先执行试看看
butterflyspring 回答时间:2018-8-29 14:48:25
你这个是什么版本的代码呀?目前看是没有问题,你的结束位是两个stop?你发送端设置是否一致?你可以用我们cubeMx的代码试一下,确定下配置问题.
甜心男爵 回答时间:2018-8-29 14:56:33
wenyangzeng 发表于 2018-8-29 14:45
STM_EVAL_COM1_Init()在USART1_Interrupt()函数前先执行试看看

USART1_Interrupt()函数是在STM_EVAL_COM1_Init()里面执行的,

USART_Init(USART1, USART_InitStruct_);
USART1_InterruptConfig();
USART_Cmd(USART1, ENABLE);
拿出来的话执行顺序是一样的.
甜心男爵 回答时间:2018-8-29 15:03:25
butterflyspring 发表于 2018-8-29 14:48
你这个是什么版本的代码呀?目前看是没有问题,你的结束位是两个stop?你发送端设置是否一致?你可以用我们cube ...

是的,使用电脑的串口调试助手,配置的也是两个停止位.上述代码修改复用端口为PA9,PA10数据收发OK,使用了STM32CubeMax验证后结果相同,PA9\PA10收发OK,PC4/PC5只能发不能收。纠结,,感觉PC5管脚配置问题(官方的或需要开启他的配置),但是关于管脚复用的寄存器应该就那三个GPIOx_AFRL、GPIOx_AFRH、GPIOx_MODER.昨天直接填的寄存器试了下也不行。
甜心男爵 回答时间:2018-8-29 16:08:58
wenyangzeng 发表于 2018-8-29 14:45
STM_EVAL_COM1_Init()在USART1_Interrupt()函数前先执行试看看

CubeMax试过了,和上述结果相同;PA9/PA10数据收发OK,修改为PC4/PC5数据只能发不能收
wenyangzeng 回答时间:2018-8-29 16:37:40
甜心男爵 发表于 2018-8-29 16:08
CubeMax试过了,和上述结果相同;PA9/PA10数据收发OK,修改为PC4/PC5数据只能发不能收 ...

USART_InitStructure.USART_StopBits = USART_StopBits_2;
为何是2位停止位?
甜心男爵 回答时间:2018-8-29 18:01:10
butterflyspring 发表于 2018-8-29 14:48
你这个是什么版本的代码呀?目前看是没有问题,你的结束位是两个stop?你发送端设置是否一致?你可以用我们cube ...

另外在使用STM32F3DISCOVER上验证结果相同。分别使用CUBEmax和上述代码,验证结果相同
feixiang20 回答时间:2018-8-30 01:38:50
是不是你的串口线有问题,或者引脚是不是被禁止了,或者函数没设置好
参考这个帖子吧,
http://www.openedv.com/posts/list/38097.htm
huangyanga 回答时间:2018-8-30 09:32:32
检查一下有没有开启PC5的其他复用功能?
12下一页

所属标签

相似问题

官网相关资源

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