普中开源电子分享网

 找回密码
 立即注册
搜索
查看: 1756|回复: 1

求助GPIOC_CRL和GPIOC_CRL&0xFFFFFFFF的区别

[复制链接]

1

主题

2

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 2021-12-27 18:40:22 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 caoxiaolin 于 2021-12-27 19:16 编辑

新人求助GPIOC_CRL和GPIOC_CRL&0xFFFFFFFF的区别

这个寄存器是只写的,我红框哪里
写GPIOC_CRL不能读出数据很正常,但是为啥GPIOC_CRL&0xFFFFFFFF 就可以呢



上图是我写的初始化,先将GPIOC_CRL要设置的位清零,然后在或上设置的值
今天看手册的时候发现GPIOC_CRL寄存器是只写的,我这样写怎么能读出数据呢?望大佬们指教
下图有汇编代码



部分程序main.c
  1. #include "stm32f10x.h"
  2. #include "digital_display.h"
  3. #include "led_74hc595.h"

  4. void SystemInit(void);

  5. int main()
  6. {        
  7.         
  8.         set_digital_display(6);
  9.         set_led_74hc595(GPIOC_CRL&0xFFFFFFFF); //显示GPIOG_CRL的值
  10.         //rest_led_74hc595();
  11.         while(1)
  12.         {
  13.                
  14.         }
  15. }

  16. void SystemInit(void)
  17. {
  18.         init_digital_display();
  19.         init_led_74hc595();
  20. }
复制代码



digital_display.h
  1. #ifndef DIGITAL_DISPLAY_H
  2. #define DIGITAL_DISPLAY_H

  3. #include "stm32f10x.h"

  4. //GPIOC 0-7 推拉模式 速度50MHZ
  5. extern void init_digital_display(void);
  6. //显示数字
  7. extern void set_digital_display(uint8_t num);

  8. #endif
复制代码

digital_display.c
  1. void init_digital_display(void)
  2. {
  3.         RCC_APB2ENR = (RCC_APB2ENR & ~((uint32_t)0x1<<4)) | ((uint32_t)0x1 << 4); //打开GPIOC的时钟
  4.         GPIOC_CRL = (GPIOC_CRL & ~(uint32_t)0x0FFFFFFF) | ((uint32_t)0x03333333);
  5.         GPIOC_BSRR |= 0x0000ffff; //gpioc 0-7 全部设置为高电平,灯全灭
  6. }
复制代码


已经解决




我知道答案 本帖寻求最佳答案回答被采纳后将获得系统奖励10 金钱 , 目前已有1人回答

回复

使用道具 举报

1

主题

2

帖子

5

积分

新手上路

Rank: 1

积分
5
 楼主| 发表于 2021-12-27 18:42:07 | 显示全部楼层
本帖最后由 caoxiaolin 于 2021-12-27 18:46 编辑

不知道,图片怎么显示不了,所以找了个图床重新传了一次
回复

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|小黑屋|普中开源电子分享网 粤ICP备16123577号-2

GMT+8, 2024-4-23 14:55 , Processed in 0.103103 second(s), 30 queries .

Powered by 论坛搭建 X3.4

Copyright © 2001-2021, Tencent Cloud.

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