硬汉嵌入式论坛

 找回密码
 立即注册
查看: 5335|回复: 3
收起左侧

[UART] UART_HandleTypeDef UartHandle 初始化错误

[复制链接]

3

主题

8

回帖

17

积分

新手上路

积分
17
发表于 2020-12-4 00:53:21 | 显示全部楼层 |阅读模式
硬汉老师,发现如图,1、在初始化UART_HandleTypeDef UartHandle 为局部变量,不初始化为0,程序会在if (HAL_UART_Init(&UartHandle) != HAL_OK) 返回错误。                                2、UART_HandleTypeDef UartHandle 设置为全局变量,可以正常工作。

                                3、初始化UART_HandleTypeDef UartHandle 为局部变量,初始化为0,也是可以正常工作。
这是为啥呢?
22.png
11.png
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106994
QQ
发表于 2020-12-4 10:01:38 | 显示全部楼层
局部变量不初始化会是个随机值,必须要初始化。
回复

使用道具 举报

4

主题

46

回帖

58

积分

初级会员

积分
58
发表于 2020-12-9 10:16:50 | 显示全部楼层
这个我补充一下,为什么全局变量就正常呢,因为startup.s文件中一般会调用_main这个C库初始化函数,这个函数会将链接器中用户指定的变量区域清空,一般链接文件都会设置全局变量清空,所以全局变量相当于被初始化了
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106994
QQ
发表于 2020-12-9 14:44:37 | 显示全部楼层
dengxiaojundink 发表于 2020-12-9 10:16
这个我补充一下,为什么全局变量就正常呢,因为startup.s文件中一般会调用_main这个C库初始化函数,这个函数会 ...

ZI区会做清空,IAR和MDK的全局变量会这么整。
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-13 11:30 , Processed in 0.283033 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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