L16物联网ARM开发--开发环境搭建及平台及GPIO口操作平台介绍(day2、3)

目录

一、MDK-ARM环境介绍及安装

二、STM32Cube简介及安装

  STM32CubeMX安装

加载固件库

​编辑

 三、 STM32F0存储器映射

四、STM32启动文件分析

五、GPIO的基本概念及寄存器介绍1

1、GPIO接口简介

 2、GPIO功能复用

 3、GPIO寄存器介绍

 GPIO工作原理框图:

五、点亮LED寄存器版(STM32F051K8)

1、硬件原理图分析

2、 使能GPIO的时钟

3、编程步骤分析 

六、点亮LED库函数版(STM32F051K8) 

2、CubeMX的配置

 3、初始化关键代码分析

4、控制LED关键代码分析

七、初识人机交互--按键

1、硬件原理图分析

作业:拍摄stm32流水灯视频


一、MDK-ARM环境介绍及安装

 略

二、STM32Cube简介及安装

 直观的选择STM32微控制器
 微控制器图形化配置
自动处理引脚冲突
动态设置确定的时钟树
可以动态确定参数设置的外围和中间件模式和初始化
功耗预测
 C代码工程生成器覆盖了STM32微控制器初始化编译软件,如IAR,KEIL,GCC可以独立使用,作为Eclipse插件使用

  STM32CubeMX安装

  安装JAVA运行环境,JavaSetup8u151.exe 
  解压stm32cubemx.zip,安装SetupSTM32CubeMX-4.22.0.exe,最好不要有中文路径
  解压stm32cube_fw_f0_v180.zip到STM32CubeMX的安装路径中
 

加载固件库

 三、 STM32F0存储器映射

 略

四、STM32启动文件分析

五、GPIO的基本概念及寄存器介绍1

1、GPIO接口简介

 通用输入输出接口GPIO是嵌入式系统、单片机开发过程中最常用的接口,用户可以通过编程灵活的对接口进行控制,实现对电路板上LED、数码管、按键等常用设备控制驱动,也可以作为串口的数据收发管脚,或AD的接口等复用功能使用。因此其作用和功能是非常重要的。

 

 2、GPIO功能复用

 注:查看 《 STM32F0数据手册》

 3、GPIO寄存器介绍

  STM32F051-GPIO常用寄存器  

4个32位配置寄存器         GPIOx_MODER,  GPIOx_OTYPER,  GPIOx_OSPEEDR     GPIOx_PUPDR  

2个32位数据寄存器       GPIOx_IDR 、GPIOx_ODR

1 个32 位置位 / 复位寄存器       GPIOx_BSRR

2 个 32 位复用功能配置寄存器      GPIOx_AFRH 、GPIOx_AFRL

注:每一组GPIO端口都有一套上述的寄存器去配置它自己的功能

GPIO寄存器MODER:

GPIO 端口模式寄存器 (GPIOx_MODER) (x = A..D,F)     偏移地址: 0x00     复位值:  

●  0x2800 0000 端口 A   ●  0x0000 0000 其他口

GPIO寄存器OTYPER:

GPIO 端口输出类型寄存器 (GPIOx_OTYPER) (x = A..D,F)   偏移地址: 0x04   复位值: 0x0000 0000

 

 GPIO工作原理框图:

 GPIO寄存器OSPEEDR:

  GPIO 口输出速度寄存器 (GPIOx_OSPEEDR) (x = A..D,F)      偏移地址: 0x08      复位值: 0x0000 0000

 

 GPIO寄存器PUPDR:

  GPIO 口上拉 / 下拉寄存器 (GPIOx_PUPDR) (x = A..D,F)      偏移地址: 0x0C      复位值:     ● 0x2400 0000 端口 A     ● 0x0000 0000 其它端口

 

 GPIO寄存器IDR:

  GPIO 端口输入数据寄存器 (GPIOx_IDR) (x = A..D,F)      偏移地址: 0x10      复位值: 0x0000 XXXX (X 表明不定 )

 

 GPIO寄存器ODR: 

GPIO 端口输出数据寄存器 (GPIOx_ODR) (x = A..D,F)      偏移地址: 0x14      复位值: 0x0000 0000

 

 GPIO寄存器BSRR:

  GPIO 端口置位 / 复位寄存器 (GPIOx_BSRR) (x = A..D,F)      偏移地址: 0x18      复位值: 0x0000 0000

 

 GPIO寄存器AFRL:

  GPIO 复用功能低位寄存器 (GPIOx_AFRL) (x = A..B)       偏移地址: 0x20       复位值: 0x0000 0000

 

GPIO寄存器AFRH:

  GPIO 复用功能低位寄存器 (GPIOx_AFRH) (x = A..B)       偏移地址: 0x24       复位值: 0x0000 0000

 

五、点亮LED寄存器版(STM32F051K8)

1、硬件原理图分析

 

2、 使能GPIO的时钟

 

  AHB 外部时钟使能寄存器 (RCC_AHBENR)    

偏移地址 : 0x14     复位值 : 0x0000 0014     访问:无等待周期,字,半字和字节访问

3、编程步骤分析 

  开启GPIOB的时钟        RCC->AHBENR  |=  1<<18;              

配置PB0 PB1 PB2接口          

GPIOB->MODER |= (1<<0)|(1<<2)|(1<<4);    //设置PB0, PB1, PB2为通用输出模式       GPIOB->OTYPER = 0x0;                                      //设置PB0, PB1, PB2为通用推挽输出       GPIOB->OSPEEDR = 0x0;                                   //设置输出速度为低速  

控制LED;                          

GPIOB->BSRR = (1<<16)|(1<<17)|(1<<18);     //复位PB0, PB1, PB2 既点亮LED        GPIOB->BSRR = (1<<0)|(1<<1)|(1<<2);            //置位PB0, PB1, PB2 既熄灭LED

六、点亮LED库函数版(STM32F051K8) 

 1、硬件原理图

2、CubeMX的配置

 

 

 3、初始化关键代码分析

 GPIOB初始化

void MX_GPIO_Init(void)
{
      GPIO_InitTypeDef GPIO_InitStruct;

    __HAL_RCC_GPIOB_CLK_ENABLE();                                                     //使能GPIOB的时钟
    
     GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2;       //初始化对象为0, 1, 2号管脚
      GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;                        //模式为推挽输出
      GPIO_InitStruct.Pull = GPIO_NOPULL;                                                //没有上拉
      GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;                         //低速
      HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);                                       //配置好后开始初始化
}

4、控制LED关键代码分析

复位PB0, PB1, PB2 既点亮LED      

HAL_GPIO_WritePin(GPIOB,  GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2, GPIO_PIN_RESET);  

置位PB0, PB1, PB2 既熄灭LED        

HAL_GPIO_WritePin(GPIOB,  GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2, GPIO_PIN_SET);

七、初识人机交互--按键

1、硬件原理图分析

 

 

作业:拍摄stm32流水灯视频

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值