历史上的今天
返回首页

历史上的今天

今天是:2024年09月28日(星期六)

2021年09月28日 | STM32入门学习之GPIO(STM32F030F4P6基于CooCox IDE)(三)

2021-09-28 来源:eefocus

先直接上代码


#include "stm32f0xx.h"

#include "stm32_lib/inc/stm32f0xx_rcc.h"

#include "stm32_lib/inc/stm32f0xx_gpio.h"

 

int main(void)

{

//1、使能时钟

RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);

//定义一个IO

GPIO_InitTypeDef PORT_LED;

//设置IO引脚,模式,输出类型,速度

PORT_LED.GPIO_Pin=GPIO_Pin_4;//IO引脚,第4脚(个人的小板子PA4有连接LED)

PORT_LED.GPIO_Mode=GPIO_Mode_OUT;//模式:输出

PORT_LED.GPIO_OType=GPIO_OType_PP;//输出类型,推挽输出

PORT_LED.GPIO_Speed=GPIO_Speed_10MHz;//输出速率,10MHz

GPIO_Init(GPIOA,&PORT_LED);//正式初始化,PA口

 

GPIO_SetBits(GPIOA,GPIO_Pin_4);//输出高电平

//GPIO_ResetBits(GPIOA,GPIO_Pin_4);//输出低电平

 

    while(1){}

 

}


1、说头文件

  既然有用到GPIO函数,就必须使用到gpio.h。而Cotex M0架构,所有外围模块的时钟是可控制的,所以如果要使能IO口,必须要配置时钟,于是需要应用时钟相关的库,所以有rcc.h。另外,作为芯片本身的头文件,这个基本需求,于是有了stm32f0xx.h。其实,以上头文件在配置Repository就已经在项目文件夹下面了。

2、说时钟


  关于STM32的时钟,也是一个大内容,这里不详细讲解,请大家百度之。简要介绍时钟函数RCC_AHBPeriphClockCmd函数,这个函数可在stm32f0xx_rcc.c文件下查看到源代码,本质就是寄存器配置。

  看RCC相关的寄存器

3、再说GPIO


  网上看到很多GPIO_InitTypeDef GPIO_InitStructure,其实这就是定义一个结构体,后面的结构体名称是可以随便取的,只要不和关键词冲突,所以我定义了一个PORT_LED,接下来我们就要配置IO的各种参数了。具体有哪些参数呢,我们可以从GPIO_InitTypeDef 这个源代码下面看一看。如下图所示,有GPIO脚位、模式、速度、输出类型、上下拉这几个参数。

型、上下拉这几个参数。

4、关于GPIO_pin,如果定义的IO是PA4,则对应就是GPIO_Pin_4,而MoDe、Speed、Otype、Pupd等我们也可以从gpio.h找到相关的取值。




5、以上参数配置完成后,调用GPIO_Init 正式加载配置。第一个参数为GPIOA、B、C、D等,第二个参数就是我们自己定义的结构体


GPIO_Init(GPIOA,&PORT_LED);//正式初始化,PA口

只有这个函数调用玩了,才算是正式加载了。




对于同一个A口或者B口等多个引脚,如果其输入输出、上拉下拉等参数完全一致,则在定义引脚的时候可通过“|”的符号来实现多个IO同时定义

如多个LED,可以PORT_LED.GPIO_Pin=GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_9类似




控制输入输出,set函数输出高电平,reset函数输出低电平,注意函数第一个参数表示端口ABCD等,第二个参数是引脚,这里不能采用我们自定义的什么PORT_LED、PORT_KEY1等。


GPIO_SetBits(GPIOA,GPIO_Pin_4);//输出高电平

//GPIO_ResetBits(GPIOA,GPIO_Pin_4);//输出低电平




6、关于GPIO输入,则只要在GPIO参数配置时将GPIO_Mode_OUT改成GPIO_Mode_IN即可。


然后调用 GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_X)函数来读取IO




关于IO更多函数,可以查看stm32f0xx_gpio.h


推荐阅读

史海拾趣

DCCOM [ DC COMPONENTS ]公司的发展小趣事

DCCOM公司自创立之初,就注重技术创新和研发投入。在成立初期,公司研发团队成功开发出一种具有高性能和低功耗特点的电子元件,这一创新技术迅速赢得了市场的认可。随着技术的不断迭代和升级,DCCOM逐渐在电子元件市场上占据了一席之地。

Aplus Integrated Circuits公司的发展小趣事

近年来,电子行业经历了多次技术变革和市场调整。面对这些挑战,Aplus Integrated Circuits公司积极调整战略,加大研发投入,推动产品创新。公司成功开发出多款适应市场需求的新型集成电路产品,不仅满足了客户的多样化需求,还为公司带来了可观的收益。

Defender Security公司的发展小趣事

近年来,生成式AI技术的快速发展为网络安全带来了新的变革。Defender Security公司紧跟这一趋势,将生成式AI技术应用于网络安全领域。他们利用生成式AI技术来模拟和预测网络攻击行为,从而提前发现潜在的安全威胁。通过不断的技术创新和应用实践,Defender Security在网络安全领域取得了显著的成果。

Holt Integrated Circuits公司的发展小趣事

除了传统的航空电子解决方案外,Holt还致力于高压LCD显示驱动器的研发。这些产品不仅满足了航空电子设备对高可靠性和高清晰度的需求,还广泛应用于工业过程自动化和井下钻探等领域。Holt的高压LCD显示驱动器以其卓越的性能和稳定性,赢得了众多客户的信赖和好评。

Corstat Containers公司的发展小趣事

为了进一步拓展国际市场,Corstat Containers公司积极寻求与国际知名电子企业的合作。通过参加国际电子展会、建立海外销售渠道等方式,公司成功打开了多个国家的市场。同时,公司还与国外科研机构展开合作,共同研发更加先进的电子产品包装技术,为公司的长期发展奠定了坚实的基础。

Hanghsing Enterprise Co Ltd公司的发展小趣事

Corstat Containers公司在电子行业中崭露头角,始于一次技术突破。当时,公司研发团队成功开发出一种新型的防静电电子元件包装盒,有效解决了电子产品在运输过程中因静电导致的损坏问题。这一创新产品迅速获得了市场的认可,许多知名电子品牌纷纷与Corstat Containers公司建立合作关系。随着订单量的不断增加,公司的规模逐渐扩大,生产线也更加完善。

问答坊 | AI 解惑

无形的屏幕

哇,我的电脑屏幕隐形了,成透明的了,这...这...怎么可能?淡定淡定,这不是灵异事件,奥秘来自于墙纸...厌倦了常规的墙纸当屏幕背景,那就看一下这一组怪异墙纸,它们会让你的屏幕变无形。但是事实是,屏幕还在,只不过是视觉欺骗了我们的感觉。 ...…

查看全部问答>

有人知道用920T的盒做个ARM9的板子,大约要多少钱吗?

有人知道用920T的盒做个ARM9的板子,大约要多少钱吗?芯片在哪买?…

查看全部问答>

能否根据windows驱动程序(release bin)编写linux驱动

有没有可能通过反编译等方式生成一个linux驱动 有没有捷径可以走…

查看全部问答>

请教一个简单的C51程序,

#include main() {         TMOD=0X10;         TH1=0XFE;         TL1=0X0C;         TR1=1;         ET1=1;       ...…

查看全部问答>

wince下调用软键盘的问题

在wince下调用软键盘,代码如下 void CRecorderDlg::OnBnClickedButton6() {         // TODO: Add your control notification handler code here         SipShowIM(SIPF_ON);  //Shows&nb ...…

查看全部问答>

在wince 下怎么能读取 一个像素 alpha 通道的值

我想把一个带 透明通道的bitmap作为前景贴到一个不带透明通道的背景bitmap上,试了几种方法 都不理想,包括 TransparentBlt(...),alphablend(...),还使用过maskdc 的方法,都不理想。 前两种方法把我的小的前景,拉伸到跟背景一样大;而且Transpa ...…

查看全部问答>

发个清华蓬远地取模软件

前几天取汉字模从网上下个软件,不太好,就因为取然的格式带H地,我要C语言数组地,以前用过清华蓬远的取模软件,我认为是最好地,今天翻出特发上来,大家共享,我也MARK,省得以后再找不到,呵呵…

查看全部问答>

一个晶振引发的问题

本来是51好板,就是CPU座松了,让同事搞一下变紧,拿回来突然不好用,仿真器上也不好用,本来屏幕可显开机画面,但怎么也搞不定,由于急有找了另一台机器总算把程序实验完,第二天对着这个坏板研究起来,首先是换51的40脚DIP座,小心得很,因为板上 ...…

查看全部问答>

菜农友情为STM32设计一种通用加密方法之原理

今天连续看了两篇关于加密方面的帖子,感觉自己应该友情奉献一回了~~~ 设想一种加密办法,大家看看可行吗? 关于STM32F器件电子签名以及加密问题-请指点 今日方知STM32的UID为96位即12个字节,以前知道STM32内嵌CRC32. 网上在线CRC演算工 ...…

查看全部问答>

急求一个实际应用中的反向比例运算放大电路

简要说明一下放大电路的原理和作用…

查看全部问答>