GPIO

CUBE首先帮我们搭建好了时钟树,即通到各个外设的时钟频率已经全部配置好了,用不用是另一码事(水龙头已经通好水,水温也调好了,外设使用只需打开水龙头),空项目也初始化时钟树。如果不用Cube,我们需要自己配置RCC寄存器,配置通到每个外设的时钟,很麻烦。

Cube在创建好文档后,需要我把USER文件夹复制到工程目录下,并在设置里增添文件路径。想增加自己的文档,就在keil的左侧菜单USER目录里添加新文件,存储在USER文件夹里。如果该项目用不着的文件,可以不添加进keil项目目录。只添加c文件就行,在c文件里包含头文件,在#include那里可以打开头文件。

ps:只要头文件包含进了main.c,我就能用对应的c文件里的函数了,不包含就不能用。头文件必须有其c文件新定义函数的声明。不论是c文件还是h文件,只要用到了其他文件中的函数和宏定义,最好都#include对应的头文件进来,其中c文件的#include可以写在其头文件里,故只需包含其头文件即可。

任何文件(.c、.h)中包含头文件的目的都是事先声明本文件需要用到的函数,而某头文件的目的是需要包含对应c文件的新定义函数的声明。

头文件的精髓——多个文件的公用代码段。

任何c文件都会被编译。但如果主程序不调用其中的函数,就不被连接到主程序中。

GPIO:

GPIO外设功能官方介绍:

根据数据表中列出的每个I/O端口的具体硬件特性,可以通过软件对每个端口位单独配置为以下模式:
•输入模式 Input mode 
•模拟模式 Analog mode
•输出模式 Output mode
•切换功能模式 Alternate function mode
•外部中断/事件线 External interrupt/event lines

在复位期间和复位后,备用功能和外部中断线不活动,I/O端口配置为输入浮动模式。

所有的GPIO管脚都有弱的内部上拉和下拉电阻,可以激活或不激活。

在Output或Alternate模式下,每个IO可以配置为open-drain或push-pull类型,IO速度可以根据VDD值进行选择。

所有端口都具有外部中断/事件能力。要使用外部中断线,端口必须配置为输入模式。所有可用的GPIO引脚连接到EXTI0到EXTI15的16条外部中断/事件线。

外部中断/事件控制器由连接线设备中多达20个边缘检测器组成,或其他设备中用于生成事件/中断请求的19个边缘检测器组成。每条输入线都可以独立配置以选择类型(事件或中断)和相应的触发事件(上升或下降或两者都有)。挂起寄存器维护中断请求的状态行。

一、GPIO口输入模式:

Cube用法:

1、选择引脚,设为GPIO_INPUT

2、左侧的GPIO的配置界面中GPIO选项卡下点击该端口,可以修改默认参数

Cube帮我做的:

1、GPIO初始化(CUBE在main.c添加MX_GPIO_Init()已经做好)

时钟使能。时钟树的水龙头有水,现在需要打开取水。(每个AHB时钟周期,采样至输入数据寄存器一次)

初始化结构体填写。包括引脚号、GPIO号、模式、上下拉电阻设置。没有速度设置。

我还要做的:

直接应用(如用库函数获取该端口的状态,用于按键检测)

二、GPIO口输出模式:

Cube用法:

1、选择引脚,设为GPIO_OUTPUT

2、左侧的GPIO的配置界面中GPIO选项卡下点击该端口,可以修改默认参数

Cube帮我做的:

1、GPIO初始化(CUBE在main.c添加MX_GPIO_Init()已经做好)

时钟使能。(对于输出来说其实用不着时钟,但是由于该模式下输入采样仍要进行,所以要开时钟)

输出电平初始化。即软件里设置的初始电平。通过HAL_GPIO_WritePin(···)函数。(该模式独有)

初始化结构体填写。包括引脚号、GPIO号、模式、速度、上下拉电阻设置。

应用步骤:

直接应用(如点灯、翻转)

三、GPIO口模态模式(被设为ADC输入通道时才有实际用处):

Cube用法:

1、选择引脚,设为GPIO_ANALOG

2、左侧的GPIO的配置界面中GPIO选项卡下点击该端口,可以修改默认参数

Cube帮我做的:

1、GPIO初始化(CUBE在main.c添加MX_GPIO_Init()已经做好)

时钟使能。

初始化结构体填写。包括引脚号、GPIO号、模式。没有速度、上下拉电阻(此模式禁用)设置。

我还要做的:

直接应用(暂时不知道用来干嘛)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值