持续关注阿杰在线更新保姆式笔记~~坚持日更
库函数跑马灯实验?
目录
一、硬件连接?
二、寄存器步骤
三、代码区
一、硬件连接?
GPIO输出方式:? 推挽输出
二、寄存器步骤
- 使能IO口时钟。配置寄存器RCC_APB2ENR。
参考手册---》6.3.7 APB2 外设时钟使能寄存器(RCC_APB2ENR)
也可直接到Ctrl+H查找RCC查询?
- 初始化IO口模式。配置寄存器GPIOx_CRH/CRL
参考手册---》8.2.1 端口配置低寄存器(GPIOx_CRL) (x=A..E)
- 操作IO口,输出高低电平。配置寄存器GPIOX_ODR或者BSRR/BRR。
参考手册---》8.2.4 端口输出数据寄存器(GPIOx_ODR) (x=A..E)
三、代码区
**main.c**
#include "stm32f10x.h"
#include "led.h"
#include "delay.h"
int main(void)
{
Led_Init();//初始化与LED连接的硬件接口
delay_init();
while(1)
{
GPIOB->ODR |= 1<<5;//PB5灭(高电平)
GPIOE->ODR |= 1<<5;//PE5灭(高电平)
delay_ms(500);
GPIOB->ODR &= ~(1<<5);//PB5亮(低电平)
GPIOE->ODR &= ~(1<<5);//PE5亮(低电平)
delay_ms(500);
}
}
**led.c**
#include "led.h"
#include "stm32f10x.h"
void Led_Init(void)
{
RCC->APB2ENR |= 1<<3;//使能PORTB时钟
RCC->APB2ENR |= 1<<6;//使能PORTE时钟
GPIOB->CRL &= 0xff0fffff;//PB.5 寄存器清零
GPIOB->CRL |= 0x00300000;//PB.5 推挽输出
GPIOB->ODR |= 1<<5;//PB.5 输出高
GPIOE->CRL &= 0xff0fffff;
GPIOE->CRL |= 0x00300000;//PE.5推挽输出
GPIOE->ODR |= 1<<5; //PE.5输出高
}
|