• 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流水灯视频

  • 相关阅读:
    【Git】Git 快照 Snapshot
    C++ Reference: Standard C++ Library reference: C Library: cwctype: iswcntrl
    Java项目-文件搜索工具
    一个技术混子参加《 2022 谷歌开发者大会》的一日游记
    微软发布Phi-3,手机上就能跑,是时候聊聊小型语言模型了|TodayAI
    Kubernetes 1.25 正式发布,多方面重大突破
    探索macOS上的最佳MySQL客户端工具
    VScode仿Ubuntu颜色,配色方案
    React 像 vue 一样配置页面路由,并支持重定向路由,路由守卫等(使用 useRoutes 完成)
    在昇腾平台上对TensorFlow网络进行性能调优
  • 原文地址:https://blog.csdn.net/qq_48328693/article/details/127760518