OpenEdv-开源电子网

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

内部的HSI时钟

[复制链接]

87

主题

331

帖子

0

精华

高级会员

Rank: 4

积分
906
金钱
906
注册时间
2016-3-26
在线时间
116 小时
发表于 2017-5-13 13:20:50 | 显示全部楼层 |阅读模式
1金钱
                /*        Enables the Internal High Speed oscillator (HSI).*/
                RCC_HSICmd(ENABLE);
@brief  Enables or disables the Internal High Speed oscillator (HSI).
void RCC_HSICmd(FunctionalState NewState)
{
  /* Check the parameters */
  assert_param(IS_FUNCTIONAL_STATE(NewState));

  *(__IO uint32_t *) CR_HSION_BB = (uint32_t)NewState;
}
                /* Enable HSI */
                RCC->CR |= ((uint32_t)RCC_CR_HSION);
这两种有什么不同吗?

最佳答案

查看完整内容[请看2#楼]

直接给寄存器赋值,CR_HSION_BB的值是这个寄存器的地址。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

14

主题

65

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
283
金钱
283
注册时间
2017-4-16
在线时间
33 小时
发表于 2017-5-13 13:20:51 | 显示全部楼层
zhoujianwen 发表于 2017-5-13 20:25
*(__IO uint32_t *) CR_HSION_BB = (uint32_t)NewState;
我看了啊,左边这个东西我在手册上没看到,不知 ...

直接给寄存器赋值,CR_HSION_BB的值是这个寄存器的地址。
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2017-5-13 15:43:26 | 显示全部楼层
进到RCC_HSICmd()这个函数里面去看一下这个函数怎么实现的,在和RCC->CR这行对比
回复

使用道具 举报

87

主题

331

帖子

0

精华

高级会员

Rank: 4

积分
906
金钱
906
注册时间
2016-3-26
在线时间
116 小时
 楼主| 发表于 2017-5-13 20:25:07 | 显示全部楼层
zuozhongkai 发表于 2017-5-13 15:43
进到RCC_HSICmd()这个函数里面去看一下这个函数怎么实现的,在和RCC->CR这行对比

*(__IO uint32_t *) CR_HSION_BB = (uint32_t)NewState;
我看了啊,左边这个东西我在手册上没看到,不知道是干嘛的
回复

使用道具 举报

1

主题

2

帖子

0

精华

初级会员

Rank: 2

积分
91
金钱
91
注册时间
2017-5-4
在线时间
12 小时
发表于 2017-5-14 21:29:26 | 显示全部楼层
assert_param()是一个宏定义,可以检测参数NewState是否正确,不对会报错。就是校验功能吧。
回复

使用道具 举报

87

主题

331

帖子

0

精华

高级会员

Rank: 4

积分
906
金钱
906
注册时间
2016-3-26
在线时间
116 小时
 楼主| 发表于 2017-5-14 21:52:17 | 显示全部楼层
keykey 发表于 2017-5-14 21:29
assert_param()是一个宏定义,可以检测参数NewState是否正确,不对会报错。就是校验功能吧。

我说的两种方法你看出来是哪两种了吗
回复

使用道具 举报

43

主题

481

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1352
金钱
1352
注册时间
2014-12-24
在线时间
321 小时
发表于 2017-5-15 01:31:24 | 显示全部楼层
没区别,一样的,库函数不是一个人做的,一群人做的,每个人都喜欢自己去#define,所以库里就是各种各样乱七八糟的宏定义,有此还重名有些还冲突。。。。。。,CR_HSION_BB这个你不要找了,数据手册上没有的,它是写库的人define出来的,法国人爱浪漫,做事比较随性,就这样了!
都觉得库是宝典,好用,我就不觉得啊,绕来绕去的地方太多了!
回复

使用道具 举报

87

主题

331

帖子

0

精华

高级会员

Rank: 4

积分
906
金钱
906
注册时间
2016-3-26
在线时间
116 小时
 楼主| 发表于 2017-5-15 09:56:16 | 显示全部楼层
jinggx 发表于 2017-5-15 01:31
没区别,一样的,库函数不是一个人做的,一群人做的,每个人都喜欢自己去#define,所以库里就是各种各样乱 ...

就是说我设置CR_HSION_BB这个值也可以,设置RCC->CR寄存器的值也可以了?
按照STM32F407手册上来说,使用HSI时钟或者其他时钟要在CR寄存器上使能,如果我使用CR_HSION_BB使能HSI,但是不在CR上使能,这样也可以用?
回复

使用道具 举报

87

主题

331

帖子

0

精华

高级会员

Rank: 4

积分
906
金钱
906
注册时间
2016-3-26
在线时间
116 小时
 楼主| 发表于 2017-5-15 12:33:08 | 显示全部楼层
iysheng 发表于 2017-5-15 11:10
直接给寄存器赋值,CR_HSION_BB的值是这个寄存器的地址。

可以,这都被你找出来了,我去看看
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-18 08:46

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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