STM32F103 LED实验
STM32F1的IO口每组最多有16个IO,每个IO有8种输入输出方式,分别是
1、输入浮空
2、 输入上拉
3、 输入下拉
4、 模拟输入
5、 开漏输出
6、 推挽输出
7、 推挽式复用功能
8、 开漏复用功能
在使用IO前一定要打开相应的IO时钟,本实验是利用IO口控制LED灯闪烁,LED灯接在PB5上,用的是原子的精英板。
IO操作步骤
1,打开IO口时钟
2,选择引脚
3,选择输入输出方式
4,选择IO翻转速度
5,把IO初始化为高电平或者低电平
6,OK
本实验是用原子哥的现成工程来做的,系统时钟什么的已经提前配置好了,代码如下;
#include "sys.h"
#include "delay.h"
/************************************************************
功能;LED闪烁,间隔为100ms
其中LED接在PB5上,低电平有效
IO口初始化步骤
1,打开IO口时钟
2,初始化IO口,设置IO类型,选引脚,设置IO翻转速度
3,初始化IO口为一个状态
****************************************************************/
void init_led()
{
GPIO_InitTypeDef GPIO_InitStruct;//GPIO结构体
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE,ENABLE);//打开GPIOB和GPIOE时钟
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;//推挽输出
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_5;//PB5
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_10MHz;//翻转速度=10MHZ
GPIO_Init(GPIOB, &GPIO_InitStruct);
GPIO_WriteBit(GPIOB,GPIO_Pin_5,1);//初始化输出1吧
}
int main(void)
{
delay_init(); //延时函数初始化
init_led(); //LED初始化
while(1)
{
GPIO_WriteBit(GPIOB,GPIO_Pin_5,1);//PB5输出1
delay_ms(100); //这个函数是引用原子哥写的延时函数,自己用软件延时也可以
GPIO_WriteBit(GPIOB,GPIO_Pin_5,0);//PB5输出0
delay_ms(100);
}
}