当前位置:首页 > 单片机 > 单片机
[导读]GPIO的一些特性,翻译自ST的参考手册1、16组IO可用2、推挽/开漏+上拉/下拉3、可从ODR输出数据,也可从外设输出数据4、每个IO速度可独立设置5、浮空输入,上下拉输入,模拟输入6、输入数据到IDR或者外设7、ODR中数据可

GPIO的一些特性,翻译自ST的参考手册

1、16组IO可用

2、推挽/开漏+上拉/下拉

3、可从ODR输出数据,也可从外设输出数据

4、每个IO速度可独立设置

5、浮空输入,上下拉输入,模拟输入

6、输入数据到IDR或者外设

7、ODR中数据可通过GPIOx_BSRR单独设置某一位。

8、IO锁定装置,可冻结IO配置。(知道下次reset)

9、模拟公呢

10、复用输入输出选择及存取

11、IO快速反转,两个时钟周期可反转一次。

12、易配置的复用功能,可使一个IO有多个功能。

本实验值用到了数字输出,控制IO反转时间以形成一组PWM波形驱动接在IO口上的LED。

【代码实现】

LED的定义:

typedef enum
{
LED1 = 0,
LED2 = 1,
LED3 = 2,
LED4 = 3
} Led_Def;

static GPIO_TypeDef* LED_PORT[4]={GPIOD, GPIOD, GPIOD, GPIOD};
static const u16 LED_PIN[4]={GPIO_Pin_12, GPIO_Pin_13, GPIO_Pin_14,GPIO_Pin_15};

LED的初始化函数

void LED_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12 |GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOD, &GPIO_InitStructure);
}

void LEDOn(Led_Def Led)//LED亮
{
LED_PORT[Led]->BSRRL=LED_PIN[Led];
}

void LEDOff(Led_Def Led)//LED灭
{
LED_PORT[Led]->BSRRH=LED_PIN[Led];
}

void LEDTog(Led_Def Led)//LED状态翻转
{
LED_PORT[Led]->ODR^=LED_PIN[Led];
}

初始化完成后,在主函数中控制LED的通断。当PWM占空比大于一个值时候,LED亮度变化不明显,所以调整PWM的变化率使得整个过程中亮度变化均匀。当占空比太小时,LED完全没亮度,我将这段占空比取消掉了,主函数的实现如下:

没有用while(1)这个循环,照样是无休止的反复亮灭。

for(i = 100;(i<2000)&(i>=0);i=i+j)
{
LEDOn(LED2);
delay_us(i);
LEDOff(LED2);
delay_us(2000-i);
if( i == 1990)
j =-5;
if(i == 10)
j = 1;
if(i>=1000)
j = 5;
if((j == 5)&(i <= 1000))
j = -1;
}


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

树莓派,(英语:Raspberry Pi,简写为RPi,别名为RasPi / RPI)是为学习计算机编程教育而设计,只有信用卡大小的微型电脑,其系统基于Linux。随着Windows 10 IoT的发布,用户可以用上运行...

关键字: 树莓派 gpio gpio编程

基于ARM® Cortex®-M4的STM32F4 MCU系列采用了意法半导体的NVM工艺和ART Accelerator™,在高达180 MHz的工作频率下通过闪存执行时其处理性能达到225 DMIPS/608 Cor...

关键字: stm32f4 ARM

stm32f4和f1都有哪些区别?除了需要的头文件不一样,管脚配置什么的有区别么?

关键字: stm32f4 f1 比较

STM32F407VET6引脚图及中文资料

关键字: stm32f4 引脚图

实验目标 利用STM32定时器产生PWM信号; 利用PWM信号实现呼吸灯。 什么是PWM信号呢? PWM,英文名Pulse Width Modulation。  PWM信号是一种脉宽调制信号,广范用于LED和电机控制等场...

关键字: PWM 呼吸灯

4月30日消息 今天下午,OPPO ColorOS官方公布了ColorOS 7的5月份升级计划,具体来看,5月20日,K5正式升级ColorOS 7,5月29日,K3正式升级ColorOS 7。此外,

关键字: OPPO OS 软件 呼吸灯

4月20日,马云公益基金会、阿里巴巴公益基金会联合宣布,与非洲联盟(非盟)合作,启动第三批非洲应急物资捐赠,将直接捐赠给非盟,由非盟和非洲疾控中心根据疫情发展和当地情况,统筹物资分发,更加高效地支持非

关键字: 马云 呼吸灯 防护 阿里巴巴

串行外设接口(SPI)是微控制器和外围IC(如传感器、ADC、DAC、移位寄存器、SRAM等)之间使用最广泛的接口之一。本文先简要说明SPI接口,然后介绍ADI公司支持SPI的模拟开关与多路转换器,以及它们如何帮助减少系...

关键字: gpio spi 串行外设接口

所谓的“呼吸灯”,就是通过程序控制led灯的闪烁过程,像呼吸一样有节奏。有亮度渐变的过程。

关键字: 单片机 呼吸灯

一、什么是GPIO? GPIO,英文全称为General-Purpose IO ports,也就是通用IO口。嵌入式系统中常常有数量众多,但是结构却比较简单的外部设备/电路,对这些设备/电路有的需要C

关键字: gpio 通用io口
关闭
关闭