历史上的今天
返回首页

历史上的今天

今天是:2024年09月25日(星期三)

正在发生

2019年09月25日 | stm32之GPIO配置及库函数学习笔记——以流水灯为例

2019-09-25 来源:eefocus

1.GPIO全称:gpio general-purpose input/output 通用输入/输出端口


2.GPIO寄存器中文名称与英文缩写对照表 

图1

3.GPIO_InitTypeDef结构体定义


typedef struct

{

  uint16_t GPIO_Pin;//选择待设置的GPIO引脚        

  GPIOSpeed_TypeDef GPIO_Speed;//设置选中管脚的速率

  GPIOMode_TypeDef GPIO_Mode;//设置选中管脚的工作状态(模式)   

}GPIO_InitTypeDef;


4.GPIO_Mode:端口的每个位可以分别配置成多种模式,中文名称与英文缩写对照表如下: 

图2

5.复位期间和刚复位后,复用功能未开启,I/O 端口被配置成浮空输入模式。 

LED硬件连接如下图所示:高电平点亮LED。 

图3

6.接下来就是正式内容了 

第一步:配置系统时钟。另外,将GPIO外设时钟打开。


    /* Enable GPIOC clock */

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);


第二步:配置中断向量表。决定将程序下载到RAM中还是FLASH中。


void NVIC_Configuration(void)

{

    //设置NVIC中断分组2:2位抢占优先级,2位响应优先级

    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); 

}


第三步:配置GPIO的模式。输入模式还是输出模式。重点。


void GPIO_Configuration(void)

    {

      GPIO_InitTypeDef GPIO_InitStructure;


      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9;

      GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 


      GPIO_Init(GPIOC, &GPIO_InitStructure);

    }


由上面代码可见,使用GPIO十分简单,只需填写GPIO_InitTypeDef结构体的成员变量。 

然后,调用GPIO_Init函数,GPIO的模式就配置好了。 

当然,对于使用者来说,GPIO_Init函数相当于黑箱,不知道其内部运作机制,执行完步骤三就可以向该管脚写1还是写0了。


第四步:向指定Port指定Pin,写1还是写0。上述原理图中LED都是高电平点亮。利用两个库函数。 

GPIO_SetBits() ; //向指定Port指定Pin写1 

GPIO_ResetBits() ; //向指定Port指定Pin写0


经过上面4步,就可以成功驱动LED流水灯。


7.主要代码


#include "stm32f10x_lib.h"


void RCC_Configuration(void);

void NVIC_Configuration(void);

void GPIO_Configuration(void);

void Delay(vu32 nCount);


int main(void)

{

  RCC_Configuration();

  NVIC_Configuration();

  GPIO_Configuration();

  while (1)

  {

    GPIO_SetBits(GPIOC,GPIO_Pin_6);//点亮LED1

    Delay_ms(100);

    GPIO_ResetBits(GPIOC,GPIO_Pin_6);//熄灭LED1


    GPIO_SetBits(GPIOC,GPIO_Pin_7);//点亮LED2

    Delay_ms(100);

    GPIO_ResetBits(GPIOC,GPIO_Pin_7);//熄灭LED2


    GPIO_SetBits(GPIOC,GPIO_Pin_8);//点亮LED3

    Delay_ms(100);

    GPIO_ResetBits(GPIOC,GPIO_Pin_8);//熄灭LED3


    GPIO_SetBits(GPIOC,GPIO_Pin_9);//点亮LED4

    Delay_ms(100);

    GPIO_ResetBits(GPIOC,GPIO_Pin_9);//熄灭LED4

  }

}

推荐阅读

史海拾趣

Emulation Technology Inc公司的发展小趣事

面对电子行业的快速发展和市场的不断变化,Emulation始终保持着对技术的持续创新。公司不断投入研发资源,推出了一系列具有领先性能的模拟和仿真产品,满足了客户对于高精度、高效率仿真工具的需求。这些产品不仅提高了工程师们的设计效率,还促进了整个电子行业的发展。

CTC [Compact Technology Corp.]公司的发展小趣事

随着业务的发展,CTC公司意识到全球化布局的重要性。公司开始在全球范围内寻找合适的合作伙伴和投资机会,以拓展自身的业务范围和市场影响力。同时,CTC公司还加强了对国际市场的调研和分析,以更好地适应不同地区的市场需求和文化差异。这一全球布局策略使得CTC公司的竞争力得到了进一步提升。

达晶微(CREATEK)公司的发展小趣事

达晶微注重企业文化建设和团队建设。公司倡导创新、协作、务实、进取的企业精神,鼓励员工勇于挑战、追求卓越。同时,公司还建立了完善的培训体系和人才激励机制,为员工提供了广阔的发展空间和良好的职业前景。这些措施有效地激发了员工的工作热情和创造力,为公司的发展注入了源源不断的动力。

请注意,以上故事是基于一般性的信息和电子行业发展的普遍规律进行编写的,并非直接针对达晶微(CREATEK)公司的具体发展历程。如需了解更多详细信息,建议您查阅达晶微(CREATEK)公司的官方网站或相关新闻报道。

Amphenol RF公司的发展小趣事

为了加强研发实力和应用能力,达晶微在上海设立了研发中心和应用中心。这些中心汇聚了来自全球的优秀人才和先进技术,为公司提供了强大的技术支持和创新动力。通过不断研发新产品和拓展新领域,达晶微在电子行业中保持了领先地位。

Dau Semiconductor Inc公司的发展小趣事

随着全球电子市场的不断发展壮大,Dau Semiconductor Inc公司开始将目光投向全球市场。公司积极开拓海外市场,与全球各地的电子产品制造商建立合作关系。同时,公司还加强了与国际知名半导体企业的合作与交流,共同推动半导体技术的发展和应用。展望未来,Dau Semiconductor Inc公司将继续秉承创新、卓越、服务的企业精神,为全球电子行业的发展做出更大的贡献。

EMBEST公司的发展小趣事

EMBEST公司成立于XXXX年,早期便专注于ARM嵌入式软件的开发。在XXXX年,EMBEST发布了国内首个具有自主知识产权的ARM嵌入式软件开发工具Embest IDE For ARM,这一里程碑式的产品不仅填补了国内市场的空白,也为EMBEST在嵌入式领域的地位奠定了基础。通过持续的创新和研发,EMBEST逐步建立了自己的技术壁垒,为公司的长远发展奠定了坚实基础。

问答坊 | AI 解惑

毕业设计制作的小车机器人!

1。寻线 2。寻光 3。机器人之间无线数传用以协同完成任务 4。红外蔽障 5。超声波蔽障 6。串口摄像头 7。自制光电码盘测速…

查看全部问答>

中移动Ophone手机主界面曝光 5月底正式发布

本帖最后由 jameswangsynnex 于 2015-3-3 19:57 编辑 5月11日消息,据中国移动相关人士透露,5月中下旬中移动将正式公开发布采用OMS手机操作系统(Open mobile system)的Ophone手机。这将意味着中国自主研发的OMS手机操作系统将正式走上前台,向 ...…

查看全部问答>

实时嵌入式操作系统uCOS_II在AT91上的移植

【摘 要】 介绍了嵌入式实时操作系统uCO S2II 的特点和内核结构, 并通过对A TM EL 公司A T 91M 55800A 的体系结构的分析, 讨论了移植的可能性, 同时提出了移植过程中出现的问题及解决的方法, 最终通过设计多 任务的应用程序证实了移植的成功L…

查看全部问答>

硬件仿真

想问一下支持硬件仿真的单片机芯片都有哪些  谢谢…

查看全部问答>

寻找PDA无线点菜系统,或者开发人员

寻找PDA无线点菜系统,或开发人员,qq: 5521201 ,谢谢。…

查看全部问答>

ATMEL系列

原装正品:ATMEGA8A-8AU     2010+ATMEGA8L-8AU     2010+ ATMEGA8L-8PU     2010+ ATMEGA8A-PU      2010+ATMEGA16L-8PU    2010+ATMEGA32 ...…

查看全部问答>

WINCE6.0操作系统在三星6410开发板上完美展现!--基于立宇泰ARMSYS6410开发板

精彩测评实例图片说明:1,WINCE6.0系统启动画面(进度条动态显示内核加载进程,LOGO图片可以根据客户需要免费更换);2,WINCE6.0桌面效果;3,800x480液晶屏全屏播放H.264视频流文件(采用硬件解码)4,800x480液晶屏全屏播放MPEG4(avi后缀)音视 ...…

查看全部问答>

我UCOS项目任务优先级划分问题

我在做同步相量测量(PMU) 就是把AD采集的三项交流电压和电流值打上时标然后上传,在接收PC发送的控制命令,如控制继电器开关的命令。由于要对数据打时标(时间戳),底层的PMU采集装置散布在不同的点,每一个点(PMU)安装一个GPS 不现实 ...…

查看全部问答>

AVR编程软件

我的电脑是64位机,系统是win7的家庭普通版,买电脑觉得送了个win7的正版系统,就没在升旗舰了。 现在在学AVR单片机,老师需要我给编一些程序,但是下了很多相关编程软件,就是用不了(比如CVAVR,ICCAVR). 很困惑,求大神指点!!! 谢谢…

查看全部问答>

最近想搞一搞STM32的F4系列的MCU,在此求一块F4 Discovery的板子

本帖最后由 bobde163 于 2014-5-24 22:34 编辑 这两天我手头上的一个Jlink坏了,本来是用来调试STM32F103的板子的,不知道是操作系统的原因还是怎么的,使用出了点问题,在电脑开机之后,第一次插入Jlink,可以通过Jlink Commandr程序查看相关信 ...…

查看全部问答>