STM32-点亮LED灯(GPIO配置)

发布者:飘然出尘最新更新时间:2018-08-15 来源: eefocus关键字:STM32  点亮LED灯  GPIO配置 手机看文章 扫描二维码
随时随地手机看文章

点亮LED灯应该是每一人学习硬件的第一个实验了吧!从51到32在到ARM,废话少说,下面开始使用STM32点亮LED灯。 
GPIO:又叫通用输入输出口,是微控制器必不可少的外设单元,用来和外界进行信号传递,数据交互的接口。 
STM32的GPIO根据型号的不同分为A-H组,每一组都称为GPIOx组,每组都有独立的寄存器,因为相对于寄存器,函数版的使用还是比较容易入门的,尤其是有些编程基础的人来讲,但是寄存器是不可以忽视的,学会了基础的函数操作还是要回头去看看具体寄存器是如何运行的,这点很重要,高手和菜鸟的区别吧! 
STM32的GPIO还具有十分强大复用功能,这点以后会介绍和使用到。现在就把它的GPIO当成一个可输出高低电平的引脚就可以了。 
首先,看一下相关的寄存器,先了解既可。 
这里写图片描述
在看一关于GPIO的所有方法。 
这里写图片描述
其中在第一个实验中用到的函数,也就几个,比如GPIO_Init()用来初始化IO口,GPIO_SetBits(),GPIO_ResetBits(),用来置位和复位IO口的电平。GPIO_WriteBits(),和GPIO_Write()也可以用来改变GPIO的电平,具体的差别就要去看手册是了解了。

#include "stm32f10x.h"

/**

  * @brief  ³õʼ»¯GPIO£¬Ä¬ÈÏËÙ¶ÈΪGPIO_Speed_50MHz;

  *         

  * @param  GPIO·Ö×é

  * @param  GPIOÒý½Å

    * @param  GPIOÒý½Åģʽ

  * @retval None

  */

void GPIO_init(GPIO_TypeDef * GPIOx,u16 GPIO_Pin,GPIOMode_TypeDef Mode)

{

    GPIO_InitTypeDef GPIO_InitStruct;                                       

    GPIO_InitStruct.GPIO_Mode=Mode;                         

    GPIO_InitStruct.GPIO_Pin=GPIO_Pin;

    GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;

    GPIO_Init(GPIOx,&GPIO_InitStruct);

}


int main()

{


        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);

        GPIO_init(GPIOA,GPIO_Pin_0,GPIO_Mode_Out_PP);

        GPIO_ResetBits(GPIOA,GPIO_Pin_0);

        while(1);

}


以上代码是将GPIOA0引脚设置为低电平。


关键字:STM32  点亮LED灯  GPIO配置 引用地址:STM32-点亮LED灯(GPIO配置)

上一篇:STM32-串口程序
下一篇:STM32-时钟树

推荐阅读最新更新时间:2024-03-16 16:11

STM32单片机开发中的RTOS
很多STM32单片机初学者都是从裸机开始的,裸机确实也能开发出好的产品。但是,作为一个嵌入式软件工程师,况且用的并不是51那种低端单片机,如果只会用裸机开发产品,那肯定是不够的。 要从裸机的思维转变到RTOS(Real Time Operating System)的思维,其实需要一个过程,而且开始的一段时间会很痛苦。但过一段时间理解了一些内容,能写一些Demo之后,你会发现其实RTOS也不难。 现在FreeRTOS在CubeMX工具中可以直接配置并使用,相当方便。 为什么需要RTOS 为什么我们需要RTOS?就像最开始学C编程时,老师告诉我们,指针很重要,那时你肯定有一个大的疑问,指针到底有什么好? 心里一直犯嘀咕着:不用指针
[单片机]
STM32 PWM功能在关闭时GPIO电平不确定的情况
  刚开始接触STM32,遇到一个项目中出现在产品调试中出现在关闭PWM输出时,GPIO电平有不确定的情况。在网上查阅资料发现大神们是这样解释的:PWM在一个脉冲没有结束时关闭输出,会导致GPIO电平不确定。   解决方法:1、在关闭PWM输出时随即将相应GPIO强制为低(这个高/低看各人的需要)   tiM_Cmd(TIM3 ,DISABLE);//关闭PWM输出   TIM_ForcedOC1Config(TIM3, TIM_ForcedAction_InActive);//将PWM输出强制为低   2、在下次打开PWM时使用下面的函数   /*因前面使用PWM强制输出为低,此处需要重新打开PWM输出*/   TI
[单片机]
基于STM32的停车锁系统
一.系统设计 停车场车位锁设计有蓝牙控制功能,可以通过蓝牙控制启动开锁,用步进电机模拟,开锁之后当车进行倒车的时候,可以将超声波采集到的距离数据发送给APP,另外当光敏电阻监测到比较暗的时候,会控制LED灯亮,给车照明。车停好之后可以远程控制车锁上,电机模拟。车锁之后如果光电管监测到有车要进入车位的时候,控制蜂鸣器报警提示。 图1 系统框图 二.硬件设计 系统内的主要电路有单片机最小系统电路,步进电机驱动电路、光敏检测电路、超声波测距电路,蓝牙通信电路、光电开关电路、电源电路、报警电路。 图2 硬件电路 三.软件设计 系统的软件逻辑清晰,首先先进行一次系统初始化,此时就开始进行超声波测距,光强检测,开始进行蓝牙通信,判断手
[单片机]
基于<font color='red'>STM32</font>的停车锁系统
STM32学习笔记4:外部中断
NVIC: STM32F40xx/STM32F41xx的92个中断里面,包括10个内核中断和82个可屏蔽中断,具有16级可编程的中断优先级,而我们常用的就是这82个可屏蔽中断。 那么我们如何管理82个外部中断呢? 首先,对STM32中断进行分组,组0~4。同时,对每个中断设置一个抢占优先级和一个响应优先级值。分组配置在SCB- AIRCR寄存器,如下表: 抢占优先级 & 响应优先级区别1.高优先级的抢占优先级是可以打断正在进行的低抢占优先级中断的。 2.抢占优先级相同的中断,高响应优先级不可以打断低响应优先级的中断。 3.抢占优先级相同的中断,当两个中断同时发生的情况下,哪个响应优先级高,哪个先执行。 4.如果两个中断的
[单片机]
<font color='red'>STM32</font>学习笔记4:外部中断
stm32常见通信方式(TTL、RS232、RS485、CAN)总结
一、TTL电平:全双工(逻辑1: 2.4V--5V 逻辑0: 0V--0.5V) 1、硬件框图如下,TTL用于两个MCU间通信 2、‘0’和‘1’表示 二、RS-232电平:全双工(逻辑1:-15V--5V 逻辑0:+3V--+15V) 1、硬件框图如下,TTL用于MCU与PC机之间通信 2、‘0’和‘1’表示 三、RS-485:半双工、(逻辑1:+2V--+6V 逻辑0: -6V---2V)这里的电平指AB 两线间的电压差。 1、硬件框图如下 2、‘0’和‘1’表示 四、CAN总线:逻辑1:-1.5V--0V 逻辑0:+1.5V--+3V)这里的电平指CAN_High、CAN_Low 两线
[单片机]
<font color='red'>stm32</font>常见通信方式(TTL、RS232、RS485、CAN)总结
142条STM32遇到的坑,你知道几个?
1、AHB系统总线分为APB1(36MHz)和APB2(72MHz),其中2 1,意思是APB2接高速设备。 2、Stm32f10x.h相当于reg52.h(里面有基本的位操作定义),另一个为stm32f10x_conf.h专门控制外围器件的配置,也就是开关头文件的作用 3、HSE Osc(High Speed External Oscillator)高速外部晶振,一般为8MHz,HSI RC(High Speed InternalRC)高速内部RC,8MHz 4、LSE Osc(Low Speed External Oscillator)低速外部晶振,一般为32.768KHz,LSI RC(Low Speed InternalR
[单片机]
142条<font color='red'>STM32</font>遇到的坑,你知道几个?
50条STM32单片机学习笔记
1、AHB系统总线分为APB1(36MHz)和APB2(72MHz),其中2 1,意思是APB2接高速设备 2、Stm32f10x.h相当于reg52.h(里面有基本的位操作定义),另一个为stm32f10x_conf.h专门控制外围器件的配置,也就是开关头文件的作用 3、HSE Osc(High Speed External Oscillator)高速外部晶振,一般为8MHz,HSI RC(High Speed InternalRC)高速内部RC,8MHz 4、LSE Osc(Low Speed External Oscillator)低速外部晶振,一般为32.768KHz,LSI RC(Low Speed Inte
[单片机]
50条<font color='red'>STM32</font>单片机学习笔记
STM32入门系列-使用C语言封装寄存器
前面介绍了存储器映射、寄存器和寄存器映射,这些都是为了介绍使用 C语言封装寄存器做铺垫。这里我们通过一个实例来对 C 语言封装寄存器进行介绍。 具体实例:控制 GPIOC 端口的第 0 管脚输出一个低电平。首先我们需要知道GPIOC 端口外设是挂接在哪个总线上的,然后根据总线基地址和本身的偏移地址得到 GPIOC 外设基地址,最后通过这个外设基地址得到里面各种寄存器基地址。 总线和外设基地址封装 根据寄存器的概念,我们可以使用 C 语言中的宏定义对寄存器进行定义。具体代码如下: //定义外设基地址 #define PERIPH_BASE ((unsigned int)0x40000000) 1) //定义 APB2 总线基地址
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved