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

news/2025/1/11 11:37:46/

目录

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


http://www.ppmy.cn/news/150841.html

相关文章

CFX本地多核批处理文件编写方法

最近刚学CFX&#xff0c;计算条件设置好后&#xff0c;一个一个去运行 .def文件实在太麻烦。一般这种CFD软件都有批处理功能&#xff0c;通过命令行去运行很方便&#xff0c;不会有满屏的CFX-Solver Manager。自己连搜带学&#xff0c;现整理如下。 先上结果 cfx5solve -def f…

Apollo版本V1.3.0升级到最新的V1.9.2

由于最近项目使用的 Apollo 配置中心版本过低&#xff0c;有不少缺陷&#xff0c;遂想升级到最新版V1.9.2 &#xff0c;通过分析 官方github文档说明&#xff0c;得知中间有3次 sql迭代变更&#xff0c; 因此整理记录下来。 官方路径: https://github.com/apolloconfig/apoll…

各位大侠,请问c#如何调用ANSYS

在C#界面上点击一个按钮ANSYS程序就出来了&#xff0c;代码哪里有问题呀&#xff1f;还是引用有问题 救救我。 using System.Diagnostics; using System.Threading; internal class Program { private static void Main(string[] args) { void test() …

VMware vCenter Converter Standalone

一、环境准备 准备VMware-converter-en-6.2.0-8466193软件安装程序 准备一台windows服务器和一台ESXI服务器或vCenter地址 二、安装 双击打开VMware vCenter Converter Standalone文件 一直下一步&#xff0c;进行安装&#xff0c;这里不一一赘述了 三、迁移物理机 选择…

Apollo升级

Apollo升级 当前版本1.8.0&#xff0c;计划升级至2.0.1 一、升级原因 版本更新带来的新增功能和bug修复修复已知版本的安全漏洞问题 二、升级说明 升级说明在release页面&#xff1a;https://github.com/apolloconfig/apollo/releases 升级版本&#xff1a; 1.8.0->1…

k8s安装3节点集群Fate v1.8.0

采用k8s&#xff0c;而非minikube, 在3个centos系统的节点上安装fate集群。 本人安装这个v1.8.0版本后&#xff0c;能登陆fateboard&#xff0c;但无法传输数据&#xff0c;问题无法解决。于是选择安装v1.7.2版本&#xff0c;配置更为具体&#xff0c;步骤更为清晰&#xff0c;…

CFX 多工况计算的批处理方法

1.引言 对于相同几何模型但边界条件做系列变化的研究&#xff0c;设置多个def计算文件并分别执行会很耗时费力&#xff0c;CFX具有命令行执行功能&#xff0c;利用ccl功能可实现这一目的。如下代码为一个示例。 cfx5solve -def filename.def -double -part 4 -start-method &…

中国人民大学与加拿大女王大学金融硕士项目带我们了解六一的那些事

“孩子&#xff0c;你一定要上大学&#xff0c;上正规的大学。人生中无拘无束又能染上书香的生活&#xff0c;也仅仅只在学生时代&#xff0c;这样的生活来之不易&#xff01;”看到这样的表述&#xff0c;读者可能认为充满朝气的六一这似乎是要被带偏的节奏&#xff1f;其实不…