你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

外设时钟使能语句的问题

[复制链接]
cllmxdsdo 提问时间:2019-8-4 13:09 /

主芯片使用的是STM32F207ZET6.

如下图所示,TIM3挂载在APB1总线下面的


11.jpg

但是有个疑问,底下外设时钟使能的语句都能使用吗,有什么区别吗?如果要使用TIM3,按道理来说不应该是第二种写法吗
RCC_AHB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3 , ENABLE);



求大佬的帮助,小弟在此谢过。

收藏 评论4 发布时间:2019-8-4 13:09

举报

4个回答
ikxlf 回答时间:2019-8-4 13:25:49
我一般用的下面语句,我建议你跟进去看寄存器配置有何区别,结合STM32参考手册
wenyangzeng 回答时间:2019-8-4 15:34:03
RCC_AHB1是寄存器复位寄存器的配置,没有TIM3选项的。
无标题4.png

RCC_APB1才是寄存器使能寄存器

无标题2.png

这句:RCC_AHB1PenriphClockCmd(RCC_APB1Periph_TIM3,ENABLE); 有点牛头不对马嘴了!楼主有点粗心了。

正确的应该是:RCC_APB1PenriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);













评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

七哥 回答时间:2019-8-5 11:36:50
这样肯定是不行的嘛!看一下时钟树。
#define RCC_APB1Periph_TIM3              ((uint32_t)0x00000002)
要是把RCC_APB1Periph_TIM3参数传进RCC_AHB1PeriphClockCmd()函数中,那出大乱子的。
RCC_AHB1PeriphClockCmd()函数中的参数值等于0x00000002那是RCC_AHB1Periph_GPIOB。
#define RCC_AHB1Periph_GPIOB             ((uint32_t)0x00000002)
20190805112937.png


评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

废鱼 回答时间:2019-8-5 16:56:53
楼主确定一下这句代码从哪儿来的,从代码上看是APB1。
#define __HAL_RCC_TIM3_CLK_ENABLE()     do { \
                                        __IO uint32_t tmpreg = 0x00U; \
                                        SET_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM3EN);\
                                        /* Delay after an RCC peripheral clock enabling */ \
                                        tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM3EN);\
                                        UNUSED(tmpreg); \

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版