寄存器点灯
寄存器操作STM32的好处是不需要依靠外部文件,自由度更高,更为底层,但也更加繁杂。
通过寄存器点灯,需要按照电路结构与手册配置寄存器:
电路结构如下:可知需配置的GPIO为GPIOB5与GPIOE5。
在STM32中,一般外设需配置三个寄存器:
首先配置APB2外设时钟使能寄存器,
按手册,需配置IOPE(6位),IOPB(3位),使其为1,其余为0,则16进制为:0x00000048,代码为:
cpp
RCC->APB2ENR=0x00000048;
接着配置端口配置寄存器,
按原理图可知,需配置GPIOB5与GPIOE5,手册上5位为低寄存器,且输出模式需为通用推挽输出,最大速度为50HZ,则CNF为00,MODE为11,则20,21为1,其余赋值为0,写成16进制,为0x00300000,代码为:
cpp
GPIOE->CRL=0x00300000;//LED1
GPIOB->CRL=0x00300000;//LED0
即配置完毕。
配置端口输出数据寄存器:
按说明手册,ODR为1,则整体16进制值为0x00000040,则代码为
cpp
GPIOB->ODR=0x00000040;
GPIOB->ODR=0x00000040;
配置完毕。
接着依靠keil生成的可执行文件下入开发板即可,完整代码为:
cpp
#include "stm32f10x.h" // Device header
int main(void)
{
RCC->APB2ENR=0x00000048;
GPIOE->CRL=0x00300000;//LED1
GPIOB->CRL=0x00300000;//LED0
GPIOB->ODR=0x00000040;
GPIOB->ODR=0x00000040;
while(1)
{}
}
现象为LED0与LED1一直亮。