STM学习- -库函数跑马灯实验

STM学习- -库函数跑马灯实验

Jan 03 03:00 06:00 09:00 12:00 03:00 06:00 09:00 Mon 04 已完成 时间安排

主要内容:

  • LED外围电路,驱动管脚确认;
  • 软体处理;

重点掌握内容:

  • 管脚配置函数;
GPIO_InitTypeDef  GPIO_InitStructure;
  
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED0-->PB.5 端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz
GPIO_Init(GPIOB, &GPIO_InitStructure);	 //根据设定参数初始化GPIOB.5
  • 管脚输出状态控制函数;
GPIO_Init(GPIOB, &GPIO_InitStructure);	 //根据设定参数初始化GPIOB.5
作用:设置某个IO口输出为高电平(1)。实际操作BSRR寄存器

GPIO_Init(GPIOB, &GPIO_InitStructure);	 //根据设定参数初始化GPIOB.5
作用:设置某个IO口输出为低电平(0)。实际操作的BRR寄存器。
跑马灯实验 硬件处理 GPIOIO控制管脚 1LED0对应PB5 2LED1对应PE5 驱动外围电路 采用上拉供电方式 软件处理 主函数main 初始化函数 管脚初始化GPIO 端口时钟使能 端口配置 管脚映射 LED0对应PB5 LED1对应PE5 输出模式 推挽输出GPIO_Mode_Out_PP 输出速率GPIO_Speed_50MHz 输出电平状态 管脚输出电平状态 GPIO_SetBits端口输出高函数 GPIO_ResetBits端口输出低函数 延时初始化 延时初始化delay_Iint while循环函数 LED灯亮 延时函数A LED灯灭 延时函数B

LED控制GPIO IO管脚及外围电路:

  • GPIO IO控制管脚确认:LED0对应PB5管脚,LED1对应PE5管脚
    (PB5、PE5采用推挽输出)
    在这里插入图片描述

  • 加粗样式**LED为0805封装贴片红色LED 工作电压1.8~2.0V,额定电流20mA ,上拉R43、R44电阻值=(3.3V-2.0V)/15*1000=86R ;

/

软体处理:

  • 库函数加载

  • GPIO 源文件stm32f10x_gpio.c 头文件stm32f10x_gpio.h加载

  • stm32f10x_rcc.h

  • misc.h

    • 编写步骤
GPIO管脚初始化函数
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);

作用:初始化一个或者多个IO口(同一组)的工作方式和速度。
该函数主要是操作GPIO_CRL(CRH)寄存器,在上拉或者下拉的
时候有设置BSRR或者BRR寄存器

typedef struct
   {
     uint16_t GPIO_Pin;                           //指定要初始化的IO口         
    GPIOSpeed_TypeDef GPIO_Speed; //设置IO口输出速度
    GPIOMode_TypeDef GPIO_Mode;    //设置工作模式:8种中的一个
   }GPIO_InitTypeDef

注释:LED初始化:控制LED管脚GPIO 管脚定义 、输出类型、输出速率、输出初始状态

GPIO_Init函数初始化样例:

GPIO_InitTypeDef  GPIO_InitStructure;
   
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED0-->PB.5 端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz
GPIO_Init(GPIOB, &GPIO_InitStructure);	 //根据设定参数初始化GPIOB.5

/

  • GPIO输出电平函数
void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
GPIO_SetBits(GPIOE,GPIO_Pin_5); 
作用:设置某个IO口输出为高电平(1)。实际操作BSRR寄存器

void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
GPIO_ResetBits(GPIOE,GPIO_Pin_5); 
作用:设置某个IO口输出为低电平(0)。实际操作的BRR寄存器。

管脚映射:

#define LED0 PBout(5)// PB5
#define LED1 PEout(5)// PE5	
------------------------------------------------------------------------------------------------------
#define PAout(n)   BIT_ADDR(GPIOA_ODR_Addr,n)  //输出 
#define PAin(n)    BIT_ADDR(GPIOA_IDR_Addr,n)  //输入 

#define PBout(n)   BIT_ADDR(GPIOB_ODR_Addr,n)  //输出 
#define PBin(n)    BIT_ADDR(GPIOB_IDR_Addr,n)  //输入 

#define PCout(n)   BIT_ADDR(GPIOC_ODR_Addr,n)  //输出 
#define PCin(n)    BIT_ADDR(GPIOC_IDR_Addr,n)  //输入 

#define PDout(n)   BIT_ADDR(GPIOD_ODR_Addr,n)  //输出 
#define PDin(n)    BIT_ADDR(GPIOD_IDR_Addr,n)  //输入 

#define PEout(n)   BIT_ADDR(GPIOE_ODR_Addr,n)  //输出 
#define PEin(n)    BIT_ADDR(GPIOE_IDR_Addr,n)  //输入

#define PFout(n)   BIT_ADDR(GPIOF_ODR_Addr,n)  //输出 
#define PFin(n)    BIT_ADDR(GPIOF_IDR_Addr,n)  //输入

#define PGout(n)   BIT_ADDR(GPIOG_ODR_Addr,n)  //输出 
#define PGin(n)    BIT_ADDR(GPIOG_IDR_Addr,n)  //输入

注释:ODR 是一个端口输出数据寄存器,也只用了低 16 位。 IDR 是一个端口输入数据寄存器,也只用了低 16 位。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值