STM32F103RCT6寄存器点灯学习

STM32F103RCT6寄存器点灯学习

一、J_LINK下载调试器学习

1. J-Link的两种下载接口

1.JTAG

后续补充

2.SWD

本次下载选用的时SWD,其中接线使用到了SWDIO、VCC、GND、SWCLK四个接口,接口图如下:
J-LINK接口分配图
注:使用时可别忘了相应驱动哈,不然狠狠的给你罢工

二、学习过程

1.相关寄存器学习

1)RCC_APB2ENR

RCC_APB2ENRAPB2外设时钟使能寄存器
偏移地址0x18
IOPAEN[2]GPIOA时钟使能 1:使能 0:关闭

RCC起始地址:0x40021000

2)GPIOx_CRH

GPIOx_CRH端口配置高寄存器
偏移地址0x04
CNF8[3:2]端口相应位模式配置
MODE8[1:0]端口相应位输出模式配置

GPIOA起始地址:0x40010800
输入输出模式配置(CNF)
CNF模式配置
输出速度配置(MODE)
MODE
注意:配置输入时,MODE应配置为00

3)GPIOx_ODR

GPIOx_ODR端口输出寄存器
偏移地址0x0c
[31:16]保留位,始终读为0
[15:0]可位操作,相应位对应相应的端口位

GPIOA起始地址:0x40010800

三、程序及流程解读

1.代码

全在下面了哦,看官们,第一次写文章,紧张的很呐,紧张的很

/*******************************************************************************************
*该方法比较简陋,但非常精悍直接,就直接操作相应寄存器地址里面的值。
*流程:1.GPIOA时钟使能
*	  2.推挽模式配置
*	  3.输出速度设置
*	  4.控制LED亮灭
*	  5.这些地址都是我上面写的寄存器的,可以参考着理解
*******************************************************************************************/
unsigned int i = 0;
*(unsigned int *)0x40021018 |= 1<<2; 		//GPIOA时钟使能
*(unsigned int *)0x40010804 &= ~(0xf);		//通用推挽输出
*(unsigned int *)0x40010804 |= 2;			//最大输出速度2Mhz

while(1)
{
	*(unsigned int *)0x4001080c &= ~(1<<8);	//低电平点亮
	一个简单的延时,嘿哈
	for(i=0; i<50000; i++);
	*(unsigned int *)0x4001080c |= 1<<8;	//高电平熄灭
	for(i-0; i<50000; i++);
}

2.过程中遇到的问题整理

1)复用推挽输出和通用推挽输出有什么区别?
复用推挽输出的IO受内部外设控制,如定时器的PWM、如SPI的MOSI、MISO等。
普通的推挽输出,IO受ODR控制,如果设置为复用推挽输出,IO就不再受ODR控制。
2)程序再三验证没问题,也成功下载,就是没效果,为什么?
一个偶然的机会,我给板子上插上了个USB,灯闪了,但是还是不明所以,随后经过学习发现,J_LINK下载调试器的VCC接口不向板子供电,只是起一个监测目标板电压的功能。以下是我整理的相关知识,不想打了,放截图吧。
j_link
好了,没啦,最后祝周末愉快,哇现在6:45下班疯狂往家冲。奥里给!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值