OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 436|回复: 2

STM32H743串口6初始化之后,只可以发送不能够接收的问题

[复制链接]

1

主题

2

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2022-5-18
在线时间
1 小时
发表于 2024-8-5 15:32:13 | 显示全部楼层 |阅读模式
1金钱
作者按照例程,对串口6进行初始化,下面是初始化设置和中断服务程序
  1. #if EN_USART6_RX
  2. u8 USART6_RX_BUF[USART_REC_LEN];
  3. u16 USART6_RX_STA=0;
  4. u8 USART6_flag=0;
  5. u8 aRxBuffer6[RXBUFFERSIZE];
  6. UART_HandleTypeDef UART6_Handler;

  7. //串口6的初始化函数,2024年8月5日15:30:52
  8. void uart6_init(u32 bound)
  9. {
  10.         UART6_Handler.Instance=USART6;                                            //USART6
  11.         UART6_Handler.Init.BaudRate=bound;
  12.         UART6_Handler.Init.WordLength=UART_WORDLENGTH_8B;
  13.         UART6_Handler.Init.StopBits=UART_STOPBITS_1;
  14.         UART6_Handler.Init.Parity=UART_PARITY_NONE;
  15.         UART6_Handler.Init.HwFlowCtl=UART_HWCONTROL_NONE;
  16.         UART6_Handler.Init.Mode=UART_MODE_TX_RX;
  17.         HAL_UART_Init(&UART6_Handler);
  18.         HAL_UART_Receive_IT(&UART6_Handler, (u8 *)aRxBuffer6, RXBUFFERSIZE);
  19. }

  20. //中断服务程序
  21. void USART6_IRQHandler(void)                       
  22. {
  23.         u32 timeout=0;
  24.     u32 maxDelay=0x1FFFF;
  25. #if SYSTEM_SUPPORT_OS
  26.         OSIntEnter();   
  27. #endif
  28.        
  29.         HAL_UART_IRQHandler(&UART6_Handler);
  30. timeout=0;
  31.     while (HAL_UART_GetState(&UART6_Handler)!=HAL_UART_STATE_READY)
  32.         {
  33.         timeout++;
  34.         if(timeout>maxDelay) break;               
  35.         }
  36. timeout=0;
  37.         while(HAL_UART_Receive_IT(&UART6_Handler,(u8 *)aRxBuffer6, RXBUFFERSIZE)!=HAL_OK)
  38.         {
  39.         timeout++;
  40.         if(timeout>maxDelay) break;       
  41.         }
  42. #if SYSTEM_SUPPORT_OS
  43.         OSIntExit();                                                                                           
  44. #endif
  45. }
  46. #endif       
复制代码
底层初始化,时钟使能和引脚配置

  1. if(huart->Instance==USART6)
  2.         {
  3.                 __HAL_RCC_GPIOC_CLK_ENABLE();
  4.                 __HAL_RCC_GPIOG_CLK_ENABLE();
  5.                 __HAL_RCC_USART6_CLK_ENABLE();
  6.        
  7.                 GPIO_Initure.Pin=GPIO_PIN_6;                        //PC6
  8.                 GPIO_Initure.Mode=GPIO_MODE_AF_PP;
  9.                 GPIO_Initure.Pull=GPIO_PULLUP;                        //ÉÏÀ­
  10.                 GPIO_Initure.Speed=GPIO_SPEED_FREQ_HIGH;
  11.                 GPIO_Initure.Alternate=GPIO_AF7_USART6;
  12.                 HAL_GPIO_Init(GPIOC,&GPIO_Initure);

  13.                 GPIO_Initure.Pin=GPIO_PIN_7;                        //PC7
  14.                 HAL_GPIO_Init(GPIOC,&GPIO_Initure);
  15.                
  16. #if EN_USART6_RX
  17.                 HAL_NVIC_EnableIRQ(USART6_IRQn);
  18.                 HAL_NVIC_SetPriority(USART6_IRQn,0,0); //中断优先级默认33,更改为00
  19. #endif       
  20.         }
复制代码
串口6接收
  1. void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
  2. {
  3.         if(huart->Instance==USART6)  //如果是串口6接收
  4.         {
  5.                 USART6_RX_BUF[USART6_RX_STA]=aRxBuffer6[0];
  6.                 USART6_RX_STA++;
  7.                 if(USART6_RX_BUF[0]==0xeb) //接收的帧头
  8.                 {
  9.                         if(USART6_RX_BUF[1]==0x90)
  10.                         {
  11.                                 if(USART6_RX_STA==9)  //接收一共9个字节
  12.                                 {
  13.                                         USART6_flag=1;
  14.                                         USART6_RX_STA=0;
  15.                                 }
  16.                         }
  17.                         else
  18.                         {
  19.                                 USART6_RX_STA=1;
  20.                         }
  21.                 }
  22.                 else
  23.                 {
  24.                         USART6_RX_STA=0;
  25.                 }
  26.         }       
  27. }
复制代码
求各位大神指点迷津

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

11

主题

2103

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4584
金钱
4584
注册时间
2015-1-10
在线时间
573 小时
发表于 2024-8-6 10:51:38 | 显示全部楼层
回复

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2022-5-18
在线时间
1 小时
 楼主| 发表于 2024-8-7 22:37:49 来自手机 | 显示全部楼层
阿侑kevin 发表于 2024-8-6 10:51
PC7的引脚配置对吗

你好,我按照这种方式把串口1到8都初始化了,测试之后只有串口6能发不能收,其他串口正常,应该不像是PC7配置的问题
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 10:16

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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