OpenEdv-开源电子网

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

HAL库版PWM实验,为何TIM_OC_InitTypeDef的结构体变量必须定义在函数外

[复制链接]

9

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
119
金钱
119
注册时间
2015-8-18
在线时间
17 小时
发表于 2020-7-18 23:36:59 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 kingpage 于 2020-7-18 23:46 编辑

最近在学习HAL库版的PWM实验,发现定时器1通道1句柄TIM_OC_InitTypeDef的结构体变量,必须定义在TIM1_PWM_Init函数外,否则会引起PWM效果无效(LED灯会一直全亮),但按我理解,TIM_OC_InitTypeDef结构体变量,定义在函数外与函数内,区别只在于变量的作用域不同而已,但TIM_OC_InitTypeDef变量本身只用于TIM1_PWM_Init函数内,并不需要在其它函数中使用,没必要定义在函数外。那么,为何需要定义在函数外才能具备PWM效果?而且其它结构体变量(如:GPIO_InitTypeDef)都是定义在函数体内,却没任何问题?
pic1.png
pic2.png

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2020-7-20 01:59:28 | 显示全部楼层
回复

使用道具 举报

9

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
119
金钱
119
注册时间
2015-8-18
在线时间
17 小时
 楼主| 发表于 2020-7-20 12:41:23 | 显示全部楼层

原子哥,我就是参考你的教程代码来写的,教程中TIM_OC_InitTypeDef的结构体就是定义在函数体外面的,能否讲解一下为何要定义在函数体外才可以呢?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2020-7-21 02:04:13 | 显示全部楼层
kingpage 发表于 2020-7-20 12:41
原子哥,我就是参考你的教程代码来写的,教程中TIM_OC_InitTypeDef的结构体就是定义在函数体外面的,能否 ...

定义在外面,全局变量,会被初始化成0
如果是局部变量,如果没有初始化,其值是不固定的,任何职都有可能。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-11 19:02

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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