OpenEdv-开源电子网

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

刚刚开始学STM32,想问一个比较菜的问题,大家不要介意~

[复制链接]

3

主题

9

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2013-8-20
在线时间
0 小时
发表于 2013-8-20 10:20:37 | 显示全部楼层 |阅读模式
为什么有些寄存器使用前要清除呢,直接赋值不好吗?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2013-8-20
在线时间
0 小时
发表于 2013-8-20 10:27:39 | 显示全部楼层
如果以前寄存器存在一些数据  而未清除 再赋值 那数据可能不对  所以先清除以前的数据 保证现在寄存器的正确性    我也是刚学习 不知对不对 请大神不要喷我
只要路对?不怕路远
回复 支持 反对

使用道具 举报

3

主题

9

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2013-8-20
在线时间
0 小时
 楼主| 发表于 2013-8-20 10:31:47 | 显示全部楼层
回复【2楼】小布的梦:
---------------------------------
我觉得应该是这样~多谢
回复 支持 反对

使用道具 举报

3

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2013-8-20
在线时间
0 小时
发表于 2013-8-20 10:33:13 | 显示全部楼层
我也觉得是这样的  哈哈
只要路对?不怕路远
回复 支持 反对

使用道具 举报

16

主题

67

帖子

0

精华

初级会员

Rank: 2

积分
188
金钱
188
注册时间
2012-10-13
在线时间
13 小时
发表于 2013-8-20 10:35:36 | 显示全部楼层
回复【3楼】aaabbb:
-------------------------------
直接赋值一点问题也没有,只要不出现与、或、非等影响目前数值的运算就行。。。
It?never?rains?but?it?pours!
回复 支持 反对

使用道具 举报

3

主题

9

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2013-8-20
在线时间
0 小时
 楼主| 发表于 2013-8-20 10:42:45 | 显示全部楼层
回复【5楼】风眠慕天:
---------------------------------
如果我想对32位一个寄存器最后给个1111的话是不是写0X0000000F,或者0X000F,或者0X0F,或者0XF都行呢?
回复 支持 反对

使用道具 举报

26

主题

280

帖子

1

精华

高级会员

Rank: 4

积分
908
金钱
908
注册时间
2013-8-2
在线时间
279 小时
发表于 2013-8-20 11:41:34 | 显示全部楼层
回复【6楼】aaabbb:
---------------------------------
都行,但是得用或,不然其他位会被影响
博客:http://blog.csdn.net/feilusia
CC2541群(127442605);CC2640群(557278427);
Android群(541462902);STM8/STM32群(164311667);
Linux群(512598061);职场交流群(450154342);
回复 支持 反对

使用道具 举报

5

主题

107

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
298
金钱
298
注册时间
2013-5-5
在线时间
0 小时
发表于 2013-8-20 12:22:17 | 显示全部楼层
为这个问题来这里注册,这种精神赞一个!
有的寄存器清空是因为这些寄存器后面还要用,你再次赋值的话可能会出错,为保证你程序的健壮性,就先清掉在赋值,多谢代码你就知道了!
游走在生活里,你我都是涉世未深的旅人,前方有我们为之心怡的归宿,身后又是一片葱郁的往昔,让生活的零碎随风而来,又似过往的随风云烟而散,唯有这厮,方能守得云开,待到春花烂漫!
回复 支持 反对

使用道具 举报

70

主题

6769

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13161
金钱
13161
注册时间
2012-11-26
在线时间
3817 小时
发表于 2013-8-20 12:35:04 | 显示全部楼层
吃饭之前得刷碗

一个道理
学无止境
回复 支持 反对

使用道具 举报

3

主题

9

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2013-8-20
在线时间
0 小时
 楼主| 发表于 2013-8-20 12:44:11 | 显示全部楼层
回复【8楼】冰尘牧之:
---------------------------------
void MYRCC_DeInit(void)
{       
RCC->APB1RSTR = 0x00000000;//复位结束  
RCC->APB2RSTR = 0x00000000; 
  
   RCC->AHBENR = 0x00000014;  //睡眠模式闪存和SRAM时钟使能.其他关闭.   
   RCC->APB2ENR = 0x00000000; //外设时钟关闭.    
   RCC->APB1ENR = 0x00000000;   
RCC->CR |= 0x00000001;     //使能内部高速时钟HSION    
RCC->CFGR &= 0xF8FF0000;   //复位SW[1:0],HPRE[3:0],PPRE1[2:0],PPRE2[2:0],ADCPRE[1:0],MCO[2:0]  
RCC->CR &= 0xFEF6FFFF;     //复位HSEON,CSSON,PLLON
RCC->CR &= 0xFFFBFFFF;     //复位HSEBYP       
RCC->CFGR &= 0xFF80FFFF;   //复位PLLSRC, LLXTPRE, LLMUL[3:0] and USBPRE 
RCC->CIR = 0x00000000;     //关闭所有中断
我看到这后面对同一个寄存器进行了好几次操作,这样分步赋值时为了增加程序的可读性吗?
回复 支持 反对

使用道具 举报

5

主题

107

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
298
金钱
298
注册时间
2013-5-5
在线时间
0 小时
发表于 2013-8-20 12:53:35 | 显示全部楼层
回复【10楼】aaabbb:
---------------------------------
是啊,你也可以一句搞定,不过没人懂,看的费劲
游走在生活里,你我都是涉世未深的旅人,前方有我们为之心怡的归宿,身后又是一片葱郁的往昔,让生活的零碎随风而来,又似过往的随风云烟而散,唯有这厮,方能守得云开,待到春花烂漫!
回复 支持 反对

使用道具 举报

3

主题

9

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2013-8-20
在线时间
0 小时
 楼主| 发表于 2013-8-20 13:53:02 | 显示全部楼层
回复【11楼】冰尘牧之:
---------------------------------
恩,原来是这样,谢谢你了~
回复 支持 反对

使用道具 举报

16

主题

67

帖子

0

精华

初级会员

Rank: 2

积分
188
金钱
188
注册时间
2012-10-13
在线时间
13 小时
发表于 2013-8-23 20:43:07 | 显示全部楼层
回复【6楼】aaabbb:
---------------------------------
0xf即可。。。默认高位为0,你可以尝试一下,没必要跟他们讨论。。。
It?never?rains?but?it?pours!
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-17 01:13

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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