stm32入门学习(二)之寄存器点灯

stm32入门学习(二)之寄存器点灯_第1张图片

1.明确三个步骤

板子采用的是stm32最小系统板stm32f103c8t6,根据原理图得知C13管脚低电平点亮led

寄存器点灯需要以下3步:

stm32入门学习(二)之寄存器点灯_第2张图片

1.查看stm32f103ct86中文手册,可以得知要配置通道APB2上的GPIOC时钟,操作如下:

stm32入门学习(二)之寄存器点灯_第3张图片

第一步: 找总线AHB外设使能时钟寄存器的地址,复制起始地址,左边是起始地址,右边是终止地址

stm32入门学习(二)之寄存器点灯_第4张图片

第二步:找APB2外设使能时钟寄存器的偏移地址,复制偏移地址,加上面AHB的寄存器时钟地址,得到0x40021018,这个地址就是

stm32入门学习(二)之寄存器点灯_第5张图片

 第三步:配置gpioC时钟使能,先把刚才的地址置“1”后进行位操作(移动4位),就可以得到时钟C的地址

stm32入门学习(二)之寄存器点灯_第6张图片

    通过强制转换为指针类型(unsigned int*),再取地址*。如下:

stm32入门学习(二)之寄存器点灯_第7张图片

 接下来还是一样,大概都是2步:第一步找GPIOC端口的寄存器地址,

stm32入门学习(二)之寄存器点灯_第8张图片

 

第二步配置端口高寄存器(GPIOx_CRH) (x=A..E)

这里GPIO13是高位的,高位即GPIOX的x是(8~15)的,所以要选择对选择GPIOP以10MHz推免输出,即0x0010,再位操作20位,配置 如下:

*(unsigned int *)0x40011004|=0x01<<20

 stm32入门学习(二)之寄存器点灯_第9张图片

 stm32入门学习(二)之寄存器点灯_第10张图片

 3.配置端口输出数据寄存器(GPIOx_ODR) (x=A..E)    同样的就是先找GPIO端口的起始地址(如上面的0x4001 1004),再找端口输出寄存器偏移地址(如上面的0x18),结合逻辑“与”“或”加上十六进制数(如上面的0x01),再结合寄存器地址进行位操作(如上面的<<20)配置

类比后参考手册

这里地址0ch的h是表示十六进制,这里gpioc的起始地址是一样的,只是偏移地址是0ch,即端口输出数据寄存器地址为 0x4001 1000+0ch=0x4001 100c

下面配置低电平有点逆反思维,可能是方便或者防止数据干扰,逻辑还是可以接受的:

首先13口置0低电平,加0x01,左移13位,然后置反,然后再与上面寄存器地址与运算,

stm32入门学习(二)之寄存器点灯_第11张图片

这样,这些就配置完了,一开始可能有点复杂,但熟悉了怎么看手册就不难了。

stm32入门学习(二)之寄存器点灯_第12张图片

此篇是看了哞哞哥的stm32点灯的一个视频课,咬牙把寄存器这些东西弄懂了一下,接下来再看看江科大自动协的点灯课,可能比较细,有点累~~呜呜

你可能感兴趣的:(stm32,学习,arm)