OpenEdv-开源电子网

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

小白向大家求助一个问题,谢谢大家

[复制链接]

7

主题

26

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
325
金钱
325
注册时间
2018-4-22
在线时间
67 小时
发表于 2018-4-23 09:58:22 | 显示全部楼层 |阅读模式
1金钱
QQ图片20180422230917.png
这里为什么不能将ccr换成QUADSPI->CCR直接操作寄存器啊,而是要定义一个变量来间接操作,谢谢大家。刚注册的号,没有多少金币,还望大家见谅。。。。


最佳答案

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

有的寄存器需要一次性设置。有的可以单独设置。 这是看具体的外设的。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2018-4-23 09:58:23 | 显示全部楼层
有的寄存器需要一次性设置。有的可以单独设置。
这是看具体的外设的。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

160

主题

967

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2097
金钱
2097
注册时间
2014-3-7
在线时间
491 小时
发表于 2018-4-23 11:32:50 | 显示全部楼层
方便参数的输入而已,你觉得呢
回复

使用道具 举报

4

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2017-1-31
在线时间
14 小时
发表于 2018-4-23 11:37:27 | 显示全部楼层
是可以直接操作的,这样做是为使代码更方便操作并且更整洁。
你想象如果所有寄存器你都直接那样去操作的话,整体看下来是什么感受,你在写的时候用起来又是什么感受
回复

使用道具 举报

7

主题

26

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
325
金钱
325
注册时间
2018-4-22
在线时间
67 小时
 楼主| 发表于 2018-4-23 12:06:56 | 显示全部楼层
ssssssssssss 发表于 2018-4-23 11:32
方便参数的输入而已,你觉得呢

不能直接操作,直接操作的话程序运行不了,而且我把QUADSPI->CCR=ccr;改成QUADSPI->CCR=0;QUADSPI->CCR|=ccr;程序还是不正常
回复

使用道具 举报

7

主题

26

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
325
金钱
325
注册时间
2018-4-22
在线时间
67 小时
 楼主| 发表于 2018-4-23 12:07:21 | 显示全部楼层
ssssssssssss 发表于 2018-4-23 11:32
方便参数的输入而已,你觉得呢

不能直接操作,直接操作的话程序运行不了,而且我把QUADSPI->CCR=ccr;改成QUADSPI->CCR=0;QUADSPI->CCR|=ccr;程序还是不正常
回复

使用道具 举报

7

主题

26

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
325
金钱
325
注册时间
2018-4-22
在线时间
67 小时
 楼主| 发表于 2018-4-23 12:07:45 | 显示全部楼层
一毛零Logo 发表于 2018-4-23 11:37
是可以直接操作的,这样做是为使代码更方便操作并且更整洁。
你想象如果所有寄存器你都直接那样去操作的话 ...

不能直接操作,直接操作的话程序运行不了,而且我把QUADSPI->CCR=ccr;改成QUADSPI->CCR=0;QUADSPI->CCR|=ccr;程序还是不正常
回复

使用道具 举报

160

主题

967

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2097
金钱
2097
注册时间
2014-3-7
在线时间
491 小时
发表于 2018-4-23 14:32:41 | 显示全部楼层
jjdkq 发表于 2018-4-23 12:06
不能直接操作,直接操作的话程序运行不了,而且我把QUADSPI->CCR=ccr;改成QUADSPI->CCR=0;QUADSPI->CCR| ...

那你是写的大错特错!
回复

使用道具 举报

0

主题

58

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
295
金钱
295
注册时间
2018-2-27
在线时间
36 小时
发表于 2018-4-23 15:27:58 | 显示全部楼层
通过定义一个 ccr变量,将ccr的值配置为你想要对应寄存器的值后,一次性赋值QUADSPI->CCR寄存器并且立即生效,只有一次!而如果你分成n次去赋值这个寄存器的话,每一次赋值时,你其实只想单独改变其中一个位,但实际上其余31个位也同时被修改成你不想要的结果(因为STM32不是51单片机,而这时该寄存器的配置已经生效),自然达不到想要的结果;因此要通过一个变量将所有的寄存器位都配置为你想要的值后再赋值给寄存器;当然啦,STM32有一种操作,叫做位带操作,可以实现类似51单片机的位操作的功能,而不会影响技巧寄存器的其他位,楼主可以去了解一下;个人见解!
回复

使用道具 举报

7

主题

26

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
325
金钱
325
注册时间
2018-4-22
在线时间
67 小时
 楼主| 发表于 2018-4-23 21:55:45 | 显示全部楼层
TCX 发表于 2018-4-23 15:27
通过定义一个 ccr变量,将ccr的值配置为你想要对应寄存器的值后,一次性赋值QUADSPI->CCR寄存器并且立即生 ...

谢谢解答!那为什么别的寄存器可以直接操作呢?之前的实验也是,几乎所有实验的寄存器都可以直接操作,只有SDRM实验和QSPI实验各有一个寄存器必须通过变量去间接操作
回复

使用道具 举报

0

主题

58

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
295
金钱
295
注册时间
2018-2-27
在线时间
36 小时
发表于 2018-4-23 23:18:37 来自手机 | 显示全部楼层
jjdkq 发表于 2018-4-23 21:55
谢谢解答!那为什么别的寄存器可以直接操作呢?之前的实验也是,几乎所有实验的寄存器都可以直接操作,只 ...

具体问题具体分析,别的寄存器也许没有问题,但是并不代表所有的没问题,寄存器该通过什么方法去配置 还得看寄存器各个位的具体功能定义
回复

使用道具 举报

7

主题

26

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
325
金钱
325
注册时间
2018-4-22
在线时间
67 小时
 楼主| 发表于 2018-4-24 11:08:04 | 显示全部楼层
正点原子 发表于 2018-4-23 09:58
有的寄存器需要一次性设置。有的可以单独设置。
这是看具体的外设的。

谢谢原子哥!看来具体问题要具体分析,我是有点钻牛角尖了
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-8 14:09

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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