历史上的今天
今天是:2024年09月25日(星期三)
2019年09月25日 | stm32之GPIO配置及库函数学习笔记——以流水灯为例
2019-09-25 来源:eefocus
1.GPIO全称:gpio general-purpose input/output 通用输入/输出端口
2.GPIO寄存器中文名称与英文缩写对照表

3.GPIO_InitTypeDef结构体定义
typedef struct
{
uint16_t GPIO_Pin;//选择待设置的GPIO引脚
GPIOSpeed_TypeDef GPIO_Speed;//设置选中管脚的速率
GPIOMode_TypeDef GPIO_Mode;//设置选中管脚的工作状态(模式)
}GPIO_InitTypeDef;
4.GPIO_Mode:端口的每个位可以分别配置成多种模式,中文名称与英文缩写对照表如下:

5.复位期间和刚复位后,复用功能未开启,I/O 端口被配置成浮空输入模式。
LED硬件连接如下图所示:高电平点亮LED。

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
}
}
史海拾趣
|
本帖最后由 jameswangsynnex 于 2015-3-3 19:57 编辑 5月11日消息,据中国移动相关人士透露,5月中下旬中移动将正式公开发布采用OMS手机操作系统(Open mobile system)的Ophone手机。这将意味着中国自主研发的OMS手机操作系统将正式走上前台,向 ...… 查看全部问答> |
|
【摘 要】 介绍了嵌入式实时操作系统uCO S2II 的特点和内核结构, 并通过对A TM EL 公司A T 91M 55800A 的体系结构的分析, 讨论了移植的可能性, 同时提出了移植过程中出现的问题及解决的方法, 最终通过设计多 任务的应用程序证实了移植的成功L… 查看全部问答> |
|
WINCE6.0操作系统在三星6410开发板上完美展现!--基于立宇泰ARMSYS6410开发板 精彩测评实例图片说明:1,WINCE6.0系统启动画面(进度条动态显示内核加载进程,LOGO图片可以根据客户需要免费更换);2,WINCE6.0桌面效果;3,800x480液晶屏全屏播放H.264视频流文件(采用硬件解码)4,800x480液晶屏全屏播放MPEG4(avi后缀)音视 ...… 查看全部问答> |
|
我在做同步相量测量(PMU) 就是把AD采集的三项交流电压和电流值打上时标然后上传,在接收PC发送的控制命令,如控制继电器开关的命令。由于要对数据打时标(时间戳),底层的PMU采集装置散布在不同的点,每一个点(PMU)安装一个GPS 不现实 ...… 查看全部问答> |
|
最近想搞一搞STM32的F4系列的MCU,在此求一块F4 Discovery的板子 本帖最后由 bobde163 于 2014-5-24 22:34 编辑 这两天我手头上的一个Jlink坏了,本来是用来调试STM32F103的板子的,不知道是操作系统的原因还是怎么的,使用出了点问题,在电脑开机之后,第一次插入Jlink,可以通过Jlink Commandr程序查看相关信 ...… 查看全部问答> |




