配置寄存器操作IO口步骤
1.初始化HAL库:
HAL_Init();
2.初始化系统时钟:
Stm32_Clock_Init(432,25,2,9);
3.使能IO口时钟,配置IO口时使能寄存器:RCC->AHB1ENR
4.初始化IO口模式,配置四个寄存器
端口模式寄存器(MODER)
端口输出类型寄存器(OTYPER)
端口输出速度寄存器(OSPEEDER)
上下拉寄存器(PUPDR)
5.操作IO口,输出高低电平
配置ODR或者BSRR寄存器,配置寄存器GPIOX_ODR或者BSRR
写跑马灯代码(寄存器)
#include“sys.h”
#include“delay.h”
#include“usart.h”
int main(){
HAL_Init();
delay_init(216);
Stm32_Clock_Init(432,25,2,9);
RCC->AHB1ENR |= 1<<1;
/* A|=B 表示A与B按位或运算后的值赋给A。1进行或运算,相当于为零的全部置一,为零的不变,与0进行或运算,全都不变
1<<1表示1的二进制位左移一位,左边的数为被移动数,右边的数为移位数
*/
//配置PB0和PB1
GPIOB->MODER = 0x05;//通用输出模式
GPIOB->OTYPER = 0x00;//推挽
GPIOB->OSPEEDER = 0x0f;// 高速
GPIOB->PUPDR = 0x05;//上拉
}
while(1){
GPIOB->BSRR = 0x03;//置1
delay_ms(500);
GPIOB->BSRR = 0x00030000//置0
delay_ms(500);
}