从零开始一起学stm32(二)---库函数GPIO口

库函数GPIO口

1.回顾

2.库函数操作GPIO口

3.作业:

  1. 做成流水灯和闪烁灯  ----呼吸灯

  2. 让蜂鸣器延时响和不响

  3. 按键控制灯的亮灭

  4. 按键控制蜂鸣器

 

1.回顾:

ARM---Cortex-M3---STM32

 

1.CPU的总线架构:

指令总线,数据总线,系统总线;

指令总线:ROM--FLASH ---512K

数据总线:SRAM---64K;

系统总线: 通过系统总线去访问APB1/APB2上的外设

2.时钟树:

两个内部时钟源和两个外部时钟源

SYSCLK/ APB1/APB2

3.GPIO口

分7组---A B C D E F G

每组16个:0~15

端口:GPIOA--A端口

管脚:PA0---A端口的第0个管脚

GPIO口作用:输入输出管脚---只能输入输出高低电平

普通的I/O口:我们需要在使用之前进行配置:

如果作为输出管脚,就要配置为输出模式;

如果作为输入管脚,就要配置为输入模式;

输入输出规定:相对于CPU来说的!

目的:点亮一个LED灯;

1.灯和CPU如何相连---看原理图;

原理图---使用哪些管脚,知道所用时钟;

分析原理图,得到管脚状态--模式

  1. 打开时钟、配置管脚信息
  2. 应用:亮灯、灭灯操作
  1. 时钟---PA5
  2. 管脚信息--模式:输出--寄存器:GPIOA_CRL
  3. 点灯灭灯操作---GPIOA_ODR  1--灭灯  0---亮灯

2.库函数操作GPIO口

为什么使用库函数?

库函数--对寄存器操作的封装,做成需要的功能函数

寄存器--寄存器是CPU的组成部分,操作寄存器就相当于直接操作CPU

1..初始化---驱动:

  1. 打开时钟:Main--conf.h--rcc.h--APB2;-总线架构
  2. 配置管脚信息:管脚信息--模式--速度

Main---conf.h--gpio.h---gpio_init();

2.应用

高低电平

 

作业:

1.流水灯

2.闪烁灯

3.灯全亮

4.灯全灭

5.蜂鸣器+延时

6.按键控制LED灯、控制蜂鸣器

    1.让2个按键控制1个灯和蜂鸣器

     2.让4个按键控制4个灯的亮灭 

 

结构体类型:定义结构体变量;

结构体变量:保存不同类型的数据---是这个变量的属性

可以把结构体变量看成一个学生---成员变量就是这个学生的信息

 

库函数操作GPIO口

库函数:STM32提供的

库函数 --就是对寄存器操作的一些功能进行封装,做成一个个容易理解的函数;

 

调用别人的函数:

需要知道:1.函数的功能;

                  2.函数的参数及参数的意义--几个参数,参数类型

                  3.返回值--是否有返回值--函数的类型

 

//点亮一个led灯步骤

1 查看原理图:

2 开启相应的外设时钟

    1.配置GPIO口

    2.写应用:点亮或者熄灭led灯!

 

第一步:

打开时钟---时钟使能

第二步:

查看原理图:

1.所用的管脚

2.是输入还是输出模式

 

操作配置寄存器--配置为输入还是输出模式;

 

对数据寄存器进行操作---高电平还是低电平!

 

位操作:

对某一位,或者某几位进行操作,而不影响其他位的操作

 

4.模块化编程:

函数三步骤:定义、声明、调用

在模块.c中定义,在模块.h中声明,在main.c中调用;

  1. 每个模块都要有一个.C文件和对应的.h文件;
  2. .C里面写的是变量的定义和函数的定义;
  3. .h文件里面保存的是函数的声明,结构体定义;
  4. 保存的.c文件必须从user/API里面把.c文件添加到你的工程
  5. 掌握extern 和static的用法;
  1. extern --声明外部变量:

用法:

1.声明一个外部变量、外部函数

 --在main.c定义一个变量int num=10;

如果在led.c里面想要使用这个变量,extern int num;

2.声明一个外部函数;

在main.c里面定义一个Delay函数,在led.c里面想要使用这个函数,

只需要在led.c里面声明这个函数---extern void Delay();

Static--声明一个静态变量、静态函数

用法:

1.声明一个局部变量---变成静态变量

2.声明一个全局变量---这个变量只能在本.c使,其他.c不能使用;

3.声明一个静态函数---这个函数只能在本.c使用,其他.c不能使用;

 

猜你喜欢

转载自blog.csdn.net/qq_38639426/article/details/88625787