STM32寄存器点灯失败

#include "stm32f10x.h"
int main(void)
{
	

	 
	 *(unsigned int *)0x40021018 |=((1)<<3);//打开时钟GPIOB
	
		*(unsigned int *)0x40010C00 |=((1)<<0);    //设置GPIO为输出模式
	
	  *(unsigned int *)0x40010C0C =1;//控制ODR寄存器
}

点灯失败,是初始化的问题,debug发现寄存器本身有个复位值,需要事先清零

#include "stm32f10x.h"
int main(void)
{
	
	 *(unsigned int *)0x40021018=1;
	 *(unsigned int *)0x40010C00=0x00;
		 
	 
	 *(unsigned int *)0x40021018 |=((1)<<3);//打开时钟GPIOB
	
		*(unsigned int *)0x40010C00 |=((1)<<0);    //设置GPIO为输出模式
	
	  *(unsigned int *)0x40010C0C =1;//控制ODR寄存器
}

但是发现依然不起作用,debug发现初始化时寄存器的值并没有被清零

原因是时钟没有开启,无法先配置CRL,注:在配置CRL的时候,如果配置0001,只开启了PB0的输出,如果需要多个端口还需注意。

将清零语句放在时钟开启之后,问题解决

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值