STM32F103ZET6 寄存器编程点亮一个灯GPIOC0端口,为啥点不亮灯???最后点亮了,表现为闪烁

2023-05-16

##初学嵌入式,请多指教

keil MDK5 编写的代码
在这里插入图片描述无法点亮灯,下面是电路图在这里插入图片描述

在这里插入图片描述![
|在这里插入图片描述
在这里插入图片描述在这里插入图片描述

int main()
{
	while(1)
	{
		*((int*)(0x40021000 + 0x18)) = 0x00000010;//打开时钟RCC_APB2ENR
		*(int*)(0x40011000 + 0x00) = 0x00000001;//GPIOC_CRL是配置0-7引脚号
		*(int*)(0x40011000 + 0x0c) = 0x00000001;//配置输出高电平GPIOC_ODR
	}
	
}//PC0端口点亮led

void SystemInit()
{
	
}

解决方案,代码问题

int main()
{
	while(1)
	{
		*((int*)(0x40021000 + 0x18)) |=1<<4;//打开时钟RCC_APB2ENR
		*(int*)(0x40011000 + 0x00) = 0x00000001;//GPIOC_CRL是配置0-7引脚号
		*(int*)(0x40011000 + 0x0c) = 0x00000000;//配置输出高电平GPIOC_ODR
	}
	
}//PC0端口点亮led

void SystemInit()
{
	
}

这下可以点亮了

还是不懂为什么,这两句的区别。求教

*((int*)(0x40021000 + 0x18)) = 0x00000010;//打开时钟RCC_APB2ENR
*((int*)(0x40021000 + 0x18)) |=1<<4;//打开时钟RCC_APB2ENR

更新一下,以下是做出来的结果有效:

		
		#define RCC_APB2ENR	   *((int *)(0x40021000 + 0x18))	//寄存器起始地址 + 偏移地址	
		//采用宏定义,增加代码的可读性并简化寄存器地址的书写
		//库函数编写代码就是采用了大量由ST公司写好的此类文件编程
		
		void SystemInit()		
		{
		
		}//防止头文件编译报错 ,也可直接将启动文件(startup_stm32f10x_hd.s)中的下列三行文件注释或者删除
		 //  ;IMPORT  SystemInit
         //   ;LDR     R0, =SystemInit
         //    ;BLX     R0 
		
		void led_Init()
		{

			 RCC_APB2ENR |= (1 << 4) 	;   //APB2 外设时钟使能寄存器
			//set pc0 pin push_pull output mode 推挽式  
			
			*(int*)(0x40011000 + 0x00) = 0x00000001; 
			//端口配置高寄存器(GPIOC_CRL) 偏移地址:0x00 复位值:0x4444 4444
			//MODE8[1:0] :01输出模式,最大速度10MHz,CNF8[1:0] :00:通用推挽输出模式
				
		}//对PC0引脚进行编码对PC0引脚所对应的寄存器初始化

		void delay(unsigned int x) //72MHz时钟频率,一个时钟周期:13.8ns,一个机器周期(1/6)us
								  
		{
			while( x-- );
		}//采用计数器的形式对LED的亮灭进行延时,精准延时应采用定时器

		int main()
		{
			led_Init();			//LED初始化
			while(1)
			{
				*(int*)(0x40011000 + 0x0c) = 0x00000001; 
				delay(0xfffff);		//维持当前状态一段时间,
				*(int*)(0x40011000 + 0x0c) = 0x00000000;  //配置输出高电平GPIOC_ODR
				delay(0xfffff);
			}
		
		}			 

GPIO的初始化需要放在while{ }的前面,不应该放在里面。犯了一个低级错误(真的是被弄晕了)。还哈改过来了。大概就是这样了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STM32F103ZET6 寄存器编程点亮一个灯GPIOC0端口,为啥点不亮灯???最后点亮了,表现为闪烁 的相关文章

  • linux(debian11)系统安装那些事儿--没有无线网需要安装无线网卡驱动双显卡等问题

    linux在日常的工作和生活中是经常用到的 xff0c 在安装的时候 xff0c 和windows不太一样 xff0c 有些驱动是需要我们自己手动安装的 xff0c 但是也并不麻烦 这里记录一下 xff0c 一种很简单的安装intel无线网
  • java线程编排CompletableFuture

    在开发中偶尔也会需要用到线程编排 比如查询商品数据 查询商品规格信息和商品图片耗时分别是1 2s和5s 如果是异步执行 那么就可以使用5s完成查询了 而不是6 2s 这里记录一下 CompletableFuture完成线程编排 import
  • dump数据库导表线上服务无响应

    有时候 有些场景下 我们需要拷贝线上的数据 进行本地测试 如果你用的是dbeaver工具操作数据库 在拷贝数据库的时候容易导致服务器没响应 看服务正常运行 但是前端访问就是没反应 服务器也没欠费 这是什么情况呢 就是mysql在进行dump
  • 多线程之如何设计线程数量

    创建多少线程合适 xff0c 要看多线程具体的应用场景 一般来说 xff0c 我们可以将程序分为 xff1a CPU密集型程序和I O密集型程序 xff0c 而针对于CPU密集型程序和I O密集型程序 xff0c 其计算最佳线程数的方法是不
  • P1825 [USACO11OPEN]Corn Maze S 题解

    这道题就是一道普通的搜索题 xff0c 非常非常普通 xff0c 普通的不能再普通那种 xff0c 和以前的bfs一样 xff0c 不过这个bfs要注意一个特判 xff0c 当弹出的那个元素的是大写字母的时候 xff0c 要窜梭到对应的大写
  • 向CentOS7虚拟机中复制文件报错error when getting information

    xff08 安装过程中 xff0c 所有询问 xff0c 都是 yes 或者按 Enter 同意默认路径 xff0c 其中的一个要注意的见下图 xff09
  • 程序设计思维与实践week12作业

    文章目录 A 必做题 1 HDU 1029描述输入输出样例想法代码 B 必做题 2 POJ 2251描述输入输出样例想法代码 C 必做题 3 HDU 1024描述东东每个学期都会去寝室接受扫楼的任务 xff0c 并清点每个寝室的人数 输入输
  • nginx安装时/ngx_murmurhash.c:37:11: error: this statement may fall through [-Werror=implicit-fallthroug

    nginx安装时 ngx murmurhash c 37 11 error this statement may fall through Werror 61 implicit fallthroug如图报错 nginx 1 8 objs M
  • vmware如何把虚拟机和本地主机如何设置在同一网段

    我的本地系统是win10系统 xff0c 其它系统方法没试过 xff0c 应该差不多 一 前提是你此时已经安装好了vmware与操作系统了 二 首先在本地系统上操作 xff1a 1 2 3 4 右键该选择查看属性 ip4 不用做其它操作 5
  • 树莓派3B+指南(十五)omxplayer的安装与使用

    omxplayer的安装与使用 需要用python来控制播放视频 xff0c 所以就找到了这个播放器 xff0c 很好用 看了官网文档 xff0c 安装使用都写的比较明白了 官网地址 xff1a https python omxplayer
  • 使用ffmpeg将实时流保存为AVI

    项目中需要将编码器编码出的H264数据保存为avi格式文件 使用ffmpeg接口进行实现 ffmpeg一般是直接打开本地视频文件 如avi mp4等 或者网络视频流 如 xff1a rtmp流媒体等 xff0c 只需要直接将本地视频文件名或
  • 电脑发热严重:禁用独立显卡(Nvidia)/ TLP解决cpu占用率大

    引言 CPU温度经常居高不下 xff0c 每天风扇嗡嗡响 xff0c 尝试过许多办法都没有解决 xff0c 最后用了一个工具 xff0c 并禁用独显 xff0c 明显改善 xff01 1 禁用独立显卡 参考 xff08 真正帮我解决问题的方
  • 网易云音乐网络问题修复 (加载失败)

    问题 网易云一切网络功能正常 xff0c 唯有在线播放时出现问题 xff0c 提示加载失败 问题解决 查看log xff0c 发现是不能建立到m7 music 126 net 原因不知道 联系舍友问能不能听歌 xff0c 舍友说可以 xff
  • ibus-setup-sunpinyin 打不开

    ibus setup sunpinyin 打不开 提示 Traceback most recent call last File 34 usr share ibus sunpinyin setup main py 34 line 42 in
  • 编译原理 Tiny编译器和TM虚拟机

    编译器与解释器的设计流程 编译器前端部分 词法分析 字符流 gt 记号流 词法分析也称作扫描 xff0c 是编译器的第一个步骤 xff0c 词法分析器读入组成源程序的字符流 xff0c 并且将它们组织成为有意义的词素的序列 xff0c 对于
  • Markdown emoji 收藏

    表情符的使用 人物 syntaxpreviewsyntaxpreviewsyntaxpreview bowtie bowtie smile x1f604 laughing x1f606 blush x1f60a smiley x1f603
  • Powershell中解决win10无法打开设置等应用问题

    在powershell中 选择run as administer 输入 Get AppxPackage AllUsers Foreach Add AppxPackage DisableDevelopmentMode Register spa
  • Arduino设计 有害气体检测小车

    有害气体检测小车 从代码已经可以看得出电路应该怎么接了 具体电路就不放上来了 Arduino控制部分代码 span class token macro property span class token directive keyword
  • xpath —— 父子、兄弟、相邻节点定位方式详解

    1 由父节点定位子节点 最简单的肯定就是由父节点定位子节点了 xff0c 我们有很多方法可以定位 xff0c 下面上个例子 xff1a 对以下html代码 span class token tag span class token tag
  • Wireshark Lab: TCP v7.0

    Wireshark Lab TCP v7 0 Answer the following questions by opening the Wireshark captured packet file tcpethereal trace 1

随机推荐