STM32F103:二.(1)点亮LED

本文介绍了如何使用STM32F103C8T6最小系统板来控制LED,从库函数初始化GPIO到直接操作寄存器实现LED的点亮和熄灭。首先,通过库函数初始化GPIOC的PC13引脚,设置为推挽输出。然后,使用GPIO_SetBits和GPIO_ResetBits控制LED状态。接着,深入到寄存器层面,详细解释了如何开启GPIOA时钟,配置CRL寄存器为推挽输出,并通过操作ODR寄存器改变LED电平。
摘要由CSDN通过智能技术生成

点亮LED

使用的板子是STM32F103C8T6最小系统板,LED0接口为PC13。

库函数版本

先初始化配置LED寄存器
定义一个结构体
GPIO_InitTypeDef GPIO_InitStructure;
在这里插入图片描述结构体类型包括引脚,传输速度,引脚模式
输出类引脚可配置传输速度
在这里插入图片描述
根据引脚需求配置引脚传输模式
在这里插入图片描述

在这里插入图片描述初始化GPIOC
GPIO_Init(GPIOC, &GPIO_InitStructure);
置位PC13为高电平
GPIO_SetBits(GPIOC,GPIO_Pin_13);
置位PC13位低电平,低电平时亮
GPIO_ResetBits(GPIOC,GPIO_Pin_13);

配置完成后代码如下
在这里插入图片描述在这里插入图片描述扩:
也可通过位代操作控制IO口,即不适用GPIO_ResetBits函数。
在这里插入图片描述输出端口使用PAout(x)/PBout(x)…
输入端口使用PAin(x)/PBin(x)…

IO口操作,只对单一的IO口!
在这里插入图片描述在这里插入图片描述
位代操作基本思想是这个公式,位代操作相当于51的 sbit led = P1^1;

((addr & 0xF0000000)+0x2000000+((addr &0xFFFFF)<<5)+(bitnum<<2))

寄存器版本

先假设控制LED灯IO口位PA1,好操作和理解。

1.打开GPIOA时钟
RCC->APB2ENR |= 1<<2; ///IO端口A时钟使能 置1打开时钟在这里插入图片描述或上1左移2位 就相当于控制位2为1 打开GPIOA时钟

2.控制CRL寄存器
高8位控制CRH 低8位控制CRL
在这里插入图片描述配置模式参考库函数模式
GPIOA->CRL &= 0xffffff0f;
GPIOA->CRL |= 0x00000030;//推挽输出
先保留其他位数据,在配置4-7位

3.端口输出数据寄存器
GPIOA->ODR |= 1<<1; ///PA1 端口输出数据寄存器
即配置PA1输出高电平
GPIOA->ODR &= 0<<1; ///PA1 端口输出数据寄存器
即配置PA1输出低电平
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值