【紧急求助】STM32F407ZGT6的6个串口中串口1通了,但是3、6不通,相同代码,请高人指教

2019-07-20 23:57发布

本帖最后由 天山狐狸 于 2016-1-28 22:07 编辑

如题,我使用了407的6个串口,用外设库初始化的,但是现在1通,3、6不通,2、4、5还没有测试。

代码如下,串口1、3、6的代码基本相同,只是USARTx不通而已。6个串口的管脚分配是软件STM32CubeMX生成的。

[mw_shl_code=applescript,true]void USART1_Init(uint32_t BaudRate)
{
  USART_InitTypeDef USART_InitStructure;

  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_Cmd(USART1, ENABLE);//使能串口
  USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//开相关中断
}


void USART3_Init(uint32_t BaudRate)
{
  USART_InitTypeDef USART_InitStructure;

  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(USART3, &USART_InitStructure);//初始化串口

  USART_Cmd(USART3, ENABLE);//使能串口
  USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);//开相关中断
}[/mw_shl_code]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
12条回答
365mcu
1楼-- · 2019-07-21 05:49
天山狐狸 发表于 2016-1-28 11:58
程序和波形如下,数据滞后于485收发,,这个是怎么回事呢

[mw_shl_code=applescript,true]void USART3 ...

最好有个发送完成中断和发送缓存为空中断,在那里将485收发控制脚切换为接收模式即可,在发送函数里切换显然是不正确的,你只是把数据给了发送缓存,但实际不一定发送完成的,就正如你的波形一下!
365mcu
2楼-- · 2019-07-21 06:14
 精彩回答 2  元偷偷看……
天山狐狸
3楼-- · 2019-07-21 07:36
365mcu 发表于 2016-1-28 09:31
首先考虑引脚配置是否OK,实测是否有波形,然后考虑是否可能是中断嵌套问题!

中断暂时没开。。

管脚配置都查了,没有问题啊。。


Tx脚有波形,但是到了A B线,就发不出去了,485模块没有问题,换到串口1上可以使用。485收发控制脚也正常。。

现在看波形,应该是软件哪里没有配置对,但是找不到
CEEEWA
4楼-- · 2019-07-21 13:32
首先 你检查一下你的 每种时钟的定义是不是和源文件的一致。而且你在下面的那个中单的抢占优先级和响应优先级不能设置成一摸一样的。着两个地方先改一下 不行再说。
365mcu
5楼-- · 2019-07-21 16:46
天山狐狸 发表于 2016-1-28 09:52
中断暂时没开。。

管脚配置都查了,没有问题啊。。

如果是485的话你的收发控制引脚是否正确!?
天山狐狸
6楼-- · 2019-07-21 17:10
365mcu 发表于 2016-1-28 10:13
如果是485的话你的收发控制引脚是否正确!?

这个是正确的

我上面的管脚、时钟等配置正确吗

一周热门 更多>