实验一 GPIO实验

一、实验目的

  1. 掌握嵌入式GPIO程序设计流程。
  2. 熟悉STM32固件库的基本使用。

二、实验设备

硬件: PC机             一台           

软件: MDK V5.23        一套

       Proteus8.7        一套

  • 实验原理

1、GPIO的基本结构

2、GPIO寄存器

每个GPIO端口有:

两个配置寄存器(GPIOx_CRL,GPIOx_CRH)

两个数据寄存器(GPIOx_IDR和GPIOx_ODR)

一个置位/复位寄存器(GPIOx_BSRR),

一个复位寄存器(GPIOx_BRR)

一个锁定寄存器(GPIOx_LCKR)。

3、GPIO的模式

4、GPIO输出模式下速率

 5、GPIO库函数

   函数具体使用方式详见 STM32固件库使用手册.pdf

6、GPIO配置步骤

 (1) 打开相应外设的时钟,例如:

      RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB , ENABLE);

                        //打开外设B口的时钟

  (2)设定管脚模式,例如

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;//选择8号管脚

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//推挽输出

  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

           //最高输出速度为50MHz,若是管脚用于输入,该项不需要设置

  GPIO_Init(GPIOB, &GPIO_InitStructure);//按照上述管脚设置模式,初始化

7、常见延时函数

 (1)us级延时函数

  void delay_nus(unsigned long n)  // n必须大于6

{

  unsigned long j;

  while(n--)              

  {

j=12;   

while(j--);

  }

}

 (2)ms级延时函数

void delay_nms(unsigned long n)  // ms级延时

{

  while(n--)   

  delay_nus(1030);   

}

四、实验内容

1、利用Keil5建立工程。建立工程方法见 新建工程模板.pdf 文件。

2、Proteus8.7的使用方法见第四章课件或自行查询资料。

STM32单片机编译环境keil5与Proteus仿真的简单结合应用_哔哩哔哩_bilibili ---STM32环境keil5与Proteus仿真结合应用视频

下列题目中,LED1、LED2、LED3分别连接到PA1 、PA2、PA3,键盘K2、 K3分别连接到PC1 、PC2。

  1. 编程实现LED1、LED2、LED3交替闪烁,每个LED闪烁间隔时间0.2S(一亮一灭共0.2S),持续1S。
  2. 编程实现LED1、LED2、LED3正向流水灯功能(即依次顺序点亮,从上到下),LED间隔时间0.2S。
  3. 编程实现以下功能:

若键盘未按下,LED1、LED2、LED3交替闪烁,每个LED闪烁间隔时间0.2S(一亮一灭共0.2S),持续1S。

‚若键盘K2按下,实现LED1、LED2、LED3正向流水灯功能(即依次顺序点亮,从上到下),LED间隔时间0.2S。

ƒ若键盘K3按下,实现LED1、LED2、LED3反向流水灯功能(即依次顺序点亮,从下到上),LED间隔时间0.2S。

提交实验报告内容要求:

  1. 实验目的。

(1)、 掌握嵌入式GPIO程序设计流程。
(2)、 熟悉STM32固件库的基本使用。

2实验内容题1-3编程。(仿真截图、程序。注意排版)

(一)编写led初始化程序

 (二)定义头文件,宏定义对应函数,以便使用

 主函数main():先执行对应初始化程序,并执行一次流水动作(1秒)

 死循环while(1)中:用if函数判断按键的状态,来实现切换正逆流水功能。

3实验总结。

通过本次实验,对掌握嵌入式GPIO程序设计流程;对GPIO口的各种函数配置的应用有了更进一步的了解,同时也进一步熟悉了STM32固件库的基本使用。通过硬件实例和对应的控制程序,详细分析了在IO端口输出高低电平的效果。

猜你喜欢

转载自blog.csdn.net/weixin_45784275/article/details/125425199