2048|21

7815

帖子

56

TA的资源

裸片初长成(中级)

楼主
 

【21楼】【CubeMX遇到的问题】串口打印:RX TX配置了,但生成代码中没有,要单.... [复制链接]

 
本帖最后由 辛昕 于 2023-9-7 10:48 编辑

2023.09.07

问题解决,主要原因:对CubeMX不够熟悉,自行添加的gpio重新初始化了io导致首字符乱码。

其他细节,详见 #21楼

 

因为是第一次用STM32CubeMX,所以,即使是以往很简单很基础的东西,都是百度搜索,跟着来。

一般一款MCU到手,我第一件事都是调通串口,方便打印调试。

这次也不例外。

 

比方说这个,STM32G030F6P6,USART1 为 20 和 1 脚,分别为 PB7 PB6

 

 

生成代码加入打印,先单个字符,三次打印 "def"

   

然而接入串口,并没有,蒙蔽。

 

中间,因为这是一块新板子,并且也是很久之后第一次用Cube的HAL库,所以做过一些其他的初步验证,例如gpio点亮LED,一切正常。

逐个打开 HAL的一系列初始化函数,惊讶地发现没有对 UART1_TX UART1_RX的引脚初始化——

其实一开始也怀疑,是不是HAL函数里已经有了。

 

但现在怀疑就是这个问题。

所以单独加入

 

先只处理TX脚

 

GPIOB的RCC时钟,HAL的初始化函数里还是有的,所以不管,只是少了io的配置而已。

然后就可以了。

 

当然,还有个问题,第一个字符是乱码。

 

检查了一下十六进制,的的确确多了一个F8

 

 

此帖出自stm32/stm8论坛

最新回复

赞一个!   详情 回复 发表于 2023-9-7 10:56
点赞 关注
个人签名

强者为尊,弱者,死无葬身之地

 

回复
举报

7815

帖子

56

TA的资源

裸片初长成(中级)

沙发
 

这里,其实是两个问题

1、为什么CubeMX生成的代码,没有初始化RX TX的引脚,很奇怪。

2、第一个字符是乱码的问题。

关于这个,查了一下,试过什么改 TXE为TC——这个话说以前标准库时我也遇到过

还有什么调换 UART_GPIO初始化和UART初始化的,但这个我完全不行,因为我一改就完全发不出。

 

此帖出自stm32/stm8论坛

点评

CubeMX生成的代码,是有对外设进行初始化的,在uart.c或者main.c有初始化函数,它会在初始化UART的时候调用的。  详情 回复 发表于 2023-9-4 14:04
 
个人签名

强者为尊,弱者,死无葬身之地

 

回复

7815

帖子

56

TA的资源

裸片初长成(中级)

板凳
 

相对来说,其实我更担心第一个问题。

因为第二个问题是代码问题,是个老问题。

第一个问题却是这个工具的问题。

 

HAL库的问题多,这个早有耳闻,但没想到这么基础的都有问题,实在让人操心——

当然,我现在不那么纠结了,毕竟是体现自己存在的价值,如果例程拿来就能用——

当然,这也不是说 ST提供的HAL库确实混账得很。

 

此帖出自stm32/stm8论坛
 
个人签名

强者为尊,弱者,死无葬身之地

 

回复

1239

帖子

68

TA的资源

纯净的硅(中级)

4
 

用了多年了,有生成,这么多人用的东西。没弄明白不要瞎喷


此帖出自stm32/stm8论坛

点评

不信可以看这个,很简单,只是串口1.      详情 回复 发表于 2023-9-4 14:54
 
 
 

回复

7269

帖子

2

TA的资源

版主

5
 
辛昕 发表于 2023-9-3 23:17 这里,其实是两个问题 1、为什么CubeMX生成的代码,没有初始化RX TX的引脚,很奇怪。 2、第一个字符 ...

CubeMX生成的代码,是有对外设进行初始化的,在uart.c或者main.c有初始化函数,它会在初始化UART的时候调用的。

此帖出自stm32/stm8论坛

点评

main.c里是肯定没有的,只有uart1的初始化,没涉及到uart1的rx tx的gpio 至于uart1.c没这个文件。 只有hal_uart.c 和 hal_uart_ex.c  详情 回复 发表于 2023-9-4 14:56
 
 
 

回复

6108

帖子

4

TA的资源

版主

6
 
本帖最后由 damiaa 于 2023-9-4 14:55 编辑

 

应该有上面的出来,自己要加入输入输出中断允许上图的后面那句

还有回调函数:这个回调函数是里面就有一个相同的函数 但加了__weak 意思是用户如果有相同的函数就优先用用户的,如果你没有这个,也不出错,只是不方便干活。。。

 

   

此帖出自stm32/stm8论坛

点评

我上传了一个,你可以看看,我也想知道设置少了哪里才导致这个问题  详情 回复 发表于 2023-9-4 14:55
不涉及输入和回调,只是单纯输出  详情 回复 发表于 2023-9-4 14:55
 
 
 

回复

7815

帖子

56

TA的资源

裸片初长成(中级)

7
 
dql2016 发表于 2023-9-4 12:08 用了多年了,有生成,这么多人用的东西。没弄明白不要瞎喷

不信可以看这个,很简单,只是串口1.

 

uart1.rar (13.54 MB, 下载次数: 0)

 
此帖出自stm32/stm8论坛
 
个人签名

强者为尊,弱者,死无葬身之地

 
 

回复

7815

帖子

56

TA的资源

裸片初长成(中级)

8
 
damiaa 发表于 2023-9-4 14:52   应该有上面的出来,自己要加入输入输出中断允许上图的后面那句 还有回调函数:这个回调函数 ...

不涉及输入和回调,只是单纯输出

此帖出自stm32/stm8论坛
 
个人签名

强者为尊,弱者,死无葬身之地

 
 

回复

7815

帖子

56

TA的资源

裸片初长成(中级)

9
 
damiaa 发表于 2023-9-4 14:52   应该有上面的出来,自己要加入输入输出中断允许上图的后面那句 还有回调函数:这个回调函数 ...

我上传了一个,你可以看看,我也想知道设置少了哪里才导致这个问题

此帖出自stm32/stm8论坛
 
个人签名

强者为尊,弱者,死无葬身之地

 
 

回复

7815

帖子

56

TA的资源

裸片初长成(中级)

10
 
wangerxian 发表于 2023-9-4 14:04 CubeMX生成的代码,是有对外设进行初始化的,在uart.c或者main.c有初始化函数,它会在初始化UART的时候调 ...

main.c里是肯定没有的,只有uart1的初始化,没涉及到uart1的rx tx的gpio

至于uart1.c没这个文件。

只有hal_uart.c 和 hal_uart_ex.c

此帖出自stm32/stm8论坛

点评

工程有吗?我看看,我倒没有遇到这种问题。用的是哪个版本的CubeMX?  详情 回复 发表于 2023-9-4 15:37
 
个人签名

强者为尊,弱者,死无葬身之地

 
 

回复

6108

帖子

4

TA的资源

版主

11
 
本帖最后由 damiaa 于 2023-9-4 15:00 编辑

我刚才用stm32cubeide生成了一个:

static void MX_USART2_UART_Init(void)
{

  /* USER CODE BEGIN USART2_Init 0 */

  /* USER CODE END USART2_Init 0 */

  /* USER CODE BEGIN USART2_Init 1 */

  /* USER CODE END USART2_Init 1 */
  huart2.Instance = USART2;
  huart2.Init.BaudRate = 115200;
  huart2.Init.WordLength = UART_WORDLENGTH_8B;
  huart2.Init.StopBits = UART_STOPBITS_1;
  huart2.Init.Parity = UART_PARITY_NONE;
  huart2.Init.Mode = UART_MODE_TX_RX;
  huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  huart2.Init.OverSampling = UART_OVERSAMPLING_16;
  if (HAL_UART_Init(&huart2) != HAL_OK)
  {
    Error_Handler();
  }
  /* USER CODE BEGIN USART2_Init 2 */

  /* USER CODE END USART2_Init 2 */

}

 

此帖出自stm32/stm8论坛

点评

对啊,只有这个,莫有rx tx的gpio初始化  详情 回复 发表于 2023-9-4 15:02
 
 
 

回复

7815

帖子

56

TA的资源

裸片初长成(中级)

12
 
damiaa 发表于 2023-9-4 14:58 我刚才用stm32cubeide生成了一个: static void MX_USART2_UART_Init(void) { /* USER CODE BEG ...

对啊,只有这个,莫有rx tx的gpio初始化

此帖出自stm32/stm8论坛
 
个人签名

强者为尊,弱者,死无葬身之地

 
 

回复

7269

帖子

2

TA的资源

版主

13
 
辛昕 发表于 2023-9-4 14:56 main.c里是肯定没有的,只有uart1的初始化,没涉及到uart1的rx tx的gpio 至于uart1.c没这个文件。 ...

工程有吗?我看看,我倒没有遇到这种问题。用的是哪个版本的CubeMX?

此帖出自stm32/stm8论坛
 
 
 

回复

7815

帖子

56

TA的资源

裸片初长成(中级)

14
 
wangerxian 发表于 2023-9-4 15:37 工程有吗?我看看,我倒没有遇到这种问题。用的是哪个版本的CubeMX?

有的,工程我发在7楼了。

版本是最新在ST官方下载的,6.9.1

 

此帖出自stm32/stm8论坛
 
个人签名

强者为尊,弱者,死无葬身之地

 
 

回复

6108

帖子

4

TA的资源

版主

15
 
本帖最后由 damiaa 于 2023-9-4 16:21 编辑

  这个里面帮你弄了

这个函数是在

 

  里面调用的,所以你不用管了。

此帖出自stm32/stm8论坛

点评

刚看了,确实有,可是为什么就不行呢,真奇怪。 加了就行  详情 回复 发表于 2023-9-4 16:40
 
 
 

回复

6108

帖子

4

TA的资源

版主

16
 

发送函数数据缓冲一般搞个全局变量数组看看如何。

此帖出自stm32/stm8论坛
 
 
 

回复

7815

帖子

56

TA的资源

裸片初长成(中级)

17
 
damiaa 发表于 2023-9-4 16:18   这个里面帮你弄了 这个函数是在     里面调用的,所以你不用管了。

刚看了,确实有,可是为什么就不行呢,真奇怪。

加了就行

此帖出自stm32/stm8论坛

点评

是不是你生成的和你手动写的不一样?你可以对照一下。  详情 回复 发表于 2023-9-4 17:18
 
个人签名

强者为尊,弱者,死无葬身之地

 
 

回复

6108

帖子

4

TA的资源

版主

18
 
本帖最后由 damiaa 于 2023-9-4 17:23 编辑
辛昕 发表于 2023-9-4 16:40 刚看了,确实有,可是为什么就不行呢,真奇怪。 加了就行

是不是你生成的和你手动写的不一样?你可以对照一下。而且你的只是设置了一下这个引脚为输出,好像没设置位串口IO。可能问题不是在这里。

发送函数数据缓冲搞个全局变量数组看看如何。

此帖出自stm32/stm8论坛

点评

原因找到了。 其实不是gpio设置不一样的关系。 前些天忙别的事情了,今天又搞了搞,重新比对了一下。 原因应该是这样的—— 还是由于我对CubeMX的不熟悉—— 1、一开始的时候,  详情 回复 发表于 2023-9-7 10:43
 
 
 

回复

6583

帖子

9

TA的资源

版主

19
 

CubeMX生成的代码,是有对外设进行初始化的,例如定时器你还需要自己打开  

此帖出自stm32/stm8论坛

点评

确实如此。 我对CubeMX还不够熟悉,在慢慢熟悉  详情 回复 发表于 2023-9-7 10:39
 
个人签名

在爱好的道路上不断前进,在生活的迷雾中播撒光引

 
 

回复

7815

帖子

56

TA的资源

裸片初长成(中级)

20
 
秦天qintian0303 发表于 2023-9-6 16:09 CubeMX生成的代码,是有对外设进行初始化的,例如定时器你还需要自己打开  

确实如此。

我对CubeMX还不够熟悉,在慢慢熟悉

此帖出自stm32/stm8论坛
 
个人签名

强者为尊,弱者,死无葬身之地

 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表