硬汉嵌入式论坛

 找回密码
 立即注册
查看: 557|回复: 17
收起左侧

[STM32H7] 在简单的寄存器操作上遇到了问题

[复制链接]

3

主题

96

回帖

105

积分

初级会员

积分
105
发表于 2023-8-19 21:40:21 | 显示全部楼层 |阅读模式


本来是想使用H7操作一下PC0进行点灯程序,但是怎么点都点不亮。求一下各位大神看看我哪里出来问题
MCUU(HGT$]YWL%_~U{0OS~3.png
J(EU2~BOQYB(Y3BUIRX$6F3.png
回复

使用道具 举报

3

主题

96

回帖

105

积分

初级会员

积分
105
 楼主| 发表于 2023-8-19 21:42:20 | 显示全部楼层
AHB4的时钟使能在这里
6NHL9_V(({P([T97{YV5FPY.png
回复

使用道具 举报

13

主题

89

回帖

128

积分

初级会员

积分
128
发表于 2023-8-20 15:37:05 | 显示全部楼层
库函数GPIO有点亮的API,可以看看它的源码内容
回复

使用道具 举报

77

主题

689

回帖

920

积分

金牌会员

积分
920
发表于 2023-8-20 17:11:04 | 显示全部楼层
乍一看去,你时钟的基址写错了
回复

使用道具 举报

3

主题

96

回帖

105

积分

初级会员

积分
105
 楼主| 发表于 2023-8-20 17:33:26 | 显示全部楼层
庄永 发表于 2023-8-20 17:11
乍一看去,你时钟的基址写错了

时钟的基地址不是0x58020800吗?
ZNN)RJ7TJWA8G~([32IKH`9.png
回复

使用道具 举报

3

主题

96

回帖

105

积分

初级会员

积分
105
 楼主| 发表于 2023-8-20 17:34:06 | 显示全部楼层
qq1646544 发表于 2023-8-20 15:37
库函数GPIO有点亮的API,可以看看它的源码内容

好的,我试试看
回复

使用道具 举报

3

主题

96

回帖

105

积分

初级会员

积分
105
 楼主| 发表于 2023-8-20 18:08:20 | 显示全部楼层
庄永 发表于 2023-8-20 17:11
乍一看去,你时钟的基址写错了

确实是我操作错了。但是我这样子操作也没法实现点亮PC0
P`_){SR)1@9[~{[F@{~F)[5.png
回复

使用道具 举报

77

主题

689

回帖

920

积分

金牌会员

积分
920
发表于 2023-8-20 18:17:20 | 显示全部楼层
2859932063 发表于 2023-8-20 17:33
时钟的基地址不是0x58020800吗?

肯定不是呀
回复

使用道具 举报

3

主题

96

回帖

105

积分

初级会员

积分
105
 楼主| 发表于 2023-8-20 18:33:55 | 显示全部楼层

但是我这样操作也点不亮,RCC使能AHB4的时钟我改过了
P`_){SR)1@9[~{[F@{~F)[5.png
回复

使用道具 举报

3

主题

96

回帖

105

积分

初级会员

积分
105
 楼主| 发表于 2023-8-20 19:10:17 | 显示全部楼层

         *(volatile unsigned int*) (0x58024400+0xE0)=(1<<2);//RCC->AHB4ENR->GPIOC
         *(volatile unsigned int*) 0x58020800|=(0x01<<0);//GPIOC->MODEL-> 01 ->通用输出
         *(volatile unsigned int*) 0x58020814&=~(1<<0);//ODR  

我修改了一下,这样还是不行
回复

使用道具 举报

77

主题

689

回帖

920

积分

金牌会员

积分
920
发表于 2023-8-20 20:20:38 | 显示全部楼层
2859932063 发表于 2023-8-20 19:10
*(volatile unsigned int*) (0x58024400+0xE0)=(1GPIOC
         *(volatile unsigned int*) 0x58020800|=(0x ...

你时钟树配置好了?M7时钟很复杂,最好不要寄存器硬上
回复

使用道具 举报

3

主题

96

回帖

105

积分

初级会员

积分
105
 楼主| 发表于 2023-8-20 21:07:25 | 显示全部楼层
庄永 发表于 2023-8-20 20:20
你时钟树配置好了?M7时钟很复杂,最好不要寄存器硬上

好吧只能换其他方式
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106978
QQ
发表于 2023-8-21 13:06:36 | 显示全部楼层
=========配置=============================
        *((__IO uint32_t*)0x580244e0)|= 0x00000004; // 时钟

        tmp = *((__IO uint32_t*)0x58020808);
        tmp &= ~0x00000003;
        tmp |= 0x00000002;
        *((__IO uint32_t*)0x58020808) = tmp;   //速度

        tmp = *((__IO uint32_t*)0x58020804) ;
        tmp &= ~0x00000001;
        tmp |= 0x00000000;
        *((__IO uint32_t*)0x58020804) = tmp;   //推挽

        tmp = *((__IO uint32_t*)0x5802080c);
        tmp &= ~0x00000003;
        tmp |= 0x00000001;
        *((__IO uint32_t*)0x5802080c) = tmp;   //上拉

        tmp = *((__IO uint32_t*)0x58020800);
        tmp &= ~0x00000003;
        tmp |= 0x00000001;
        *((__IO uint32_t*)0x58020800) = tmp;   //模式


============翻转=============
        *((__IO uint32_t*)0x58020818) = 1 << 0;
         HAL_Delay(10);
        *((__IO uint32_t*)0x58020818) = 1 << 16;

      HAL_Delay(10);

=========================

下载 (1).png

回复

使用道具 举报

3

主题

96

回帖

105

积分

初级会员

积分
105
 楼主| 发表于 2023-8-21 13:44:22 | 显示全部楼层
eric2013 发表于 2023-8-21 13:06
=========配置=============================
        *((__IO uint32_t*)0x580244e0)|= 0x00000004; // 时钟

感谢硬汉大神
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2023-8-21 14:33:56 | 显示全部楼层
cpp文件咋运行的,求教
回复

使用道具 举报

3

主题

96

回帖

105

积分

初级会员

积分
105
 楼主| 发表于 2023-8-21 16:14:30 | 显示全部楼层
BIAN. 发表于 2023-8-21 14:33
cpp文件咋运行的,求教

参考的CSDN上的,就是用hal库初始化全部外设之后,在进入到while(1)循环之前,写一个CPP的函数,从这个函数进入到CPP的文件中去,把编译器改成v6以上的,然后选择C++11就可以了。但是也有一些小坑要注意,比如中断函数要用extern C处理啥的。https://blog.csdn.net/qq_3156265 ... 24971-null-null.142^v93^chatgptT3_2&utm_term=STM32C%2B%2B&spm=1018.2226.3001.4187
回复

使用道具 举报

19

主题

235

回帖

292

积分

高级会员

积分
292
发表于 2023-8-21 16:28:02 | 显示全部楼层
不用配置时钟树,启动之后默认用内部低速时钟也能跑,直接用硬汉老师给的程序就行了,开一下GPIO时钟配置一下GPIO就行了
回复

使用道具 举报

3

主题

96

回帖

105

积分

初级会员

积分
105
 楼主| 发表于 2023-8-21 16:41:13 | 显示全部楼层
tovinz 发表于 2023-8-21 16:28
不用配置时钟树,启动之后默认用内部低速时钟也能跑,直接用硬汉老师给的程序就行了,开一下GPIO时钟配置一 ...

好的,晚上回去试试
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-12 21:26 , Processed in 0.214951 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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