STM32F429 >> 2. LED_Library_Function

发布者:BlissfulBliss最新更新时间:2019-08-29 来源: eefocus关键字:STM32F429  LED  Library  Function 手机看文章 扫描二维码
随时随地手机看文章

main.c

#include

#include


int main(void)

{

GPIO_InitTypeDef InitStruct;

RCC->AHB1ENR |= (1<<7);

InitStruct.GPIO_Pin = GPIO_Pin_9;

InitStruct.GPIO_Mode = GPIO_Mode_OUT;

InitStruct.GPIO_OType = GPIO_OType_PP;

InitStruct.GPIO_PuPd = GPIO_PuPd_UP;

InitStruct.GPIO_Speed = GPIO_Speed_25MHz;

GPIO_Init(GPIOH, &InitStruct);

while(1);

}


void SystemInit(void)

{

}



stm32f4xx.h

#ifndef __STM32F4XX_H

#define __STM32F4XX_H


#define   __IO  volatile


typedef unsigned int    uint32_t;

typedef unsigned short  uint16_t;

typedef unsigned char   uint8_t;


//----------------------基地址赋值------------------------

#define PERIPH_BASE         ((unsigned int)0x40000000)

//总线寄存器

#define APB1PERIPH_BASE     PERIPH_BASE

#define APB2PERIPH_BASE     (PERIPH_BASE + 0x00010000)

#define AHB1PERIPH_BASE     (PERIPH_BASE + 0x00020000)

#define AHB2PERIPH_BASE     (PERIPH_BASE + 0x10000000)

#define AHB3PERIPH_BASE     (PERIPH_BASE + 0X60000000)



//GPIO 寄存器

#define GPIOA_BASE          AHB1PERIPH_BASE

#define GPIOB_BASE          (AHB1PERIPH_BASE + 0x00000400)

#define GPIOC_BASE          (AHB1PERIPH_BASE + 0x00000800)

#define GPIOD_BASE          (AHB1PERIPH_BASE + 0x00000C00)

#define GPIOE_BASE          (AHB1PERIPH_BASE + 0x00001000)

#define GPIOF_BASE          (AHB1PERIPH_BASE + 0x00001400)

#define GPIOG_BASE          (AHB1PERIPH_BASE + 0x00001800)

#define GPIOH_BASE          (AHB1PERIPH_BASE + 0x00001C00)

#define GPIOI_BASE          (AHB1PERIPH_BASE + 0x00002000)

//复位和时钟控制

#define RCC_BASE            (AHB1PERIPH_BASE + 0x00003800)


//外设时钟使能寄存器

#define RCC_AHB1ENR         *((unsigned int *)(RCC_BASE + 0X30))


typedef struct

{

__IO uint32_t MODER;

__IO uint32_t OTYPER;

__IO uint32_t OSPEEDR;

__IO uint32_t PUPDR;

__IO uint32_t IDR;

__IO uint32_t ODR;

__IO uint16_t BSRRL;

__IO uint16_t BSRRH;

__IO uint32_t LCKR;

__IO uint32_t AFR[2];

}GPIO_TypeDef;


typedef struct

{

__IO uint32_t CR;

__IO uint32_t PLLCFGR;

__IO uint32_t CFGR;

__IO uint32_t CIR;

__IO uint32_t AHB1RSTR;

__IO uint32_t AHB2RSTR;

__IO uint32_t AHB3RSTR;

__IO uint32_t RESERVED0; //此处为适用于其他芯片版本的APB1RSTR

__IO uint32_t APB1RSTR;

__IO uint32_t RESERVED1[2]; //此处为适用于其他芯片版本的APB2RSTR

__IO uint32_t APB2RSTR;

__IO uint32_t AHB1ENR;

__IO uint32_t AHB2ENR;

__IO uint32_t AHB3ENR;

//后面还有很多,省略...

}RCC_TypeDef;


//------------------定义访问外设的结构体指针---------------------

#define GPIOA   ((GPIO_TypeDef *) GPIOA_BASE)

#define GPIOB   ((GPIO_TypeDef *) GPIOB_BASE)

#define GPIOC   ((GPIO_TypeDef *) GPIOC_BASE)

#define GPIOD   ((GPIO_TypeDef *) GPIOD_BASE)

#define GPIOE   ((GPIO_TypeDef *) GPIOE_BASE)

#define GPIOF   ((GPIO_TypeDef *) GPIOF_BASE)

#define GPIOG   ((GPIO_TypeDef *) GPIOG_BASE)

#define GPIOH   ((GPIO_TypeDef *) GPIOH_BASE)

#define GPIOI   ((GPIO_TypeDef *) GPIOI_BASE)


#define RCC     ((RCC_TypeDef *) RCC_BASE)


#endif /* __STM32F4XX_H */




stm32f4xx_gpio.c

#include

#include


void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)                                //Set bits

{

GPIOx->BSRRL = GPIO_Pin;

}


void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)                              //Reset bits

{

GPIOx->BSRRH = GPIO_Pin;

}


void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)                   //Find the pin, and initialize the GPIO

{

uint32_t pinpos = 0x00, pin = 0x00, currency = 0x00;

currency = GPIO_InitStruct->GPIO_Pin;

for(pinpos=0x00; pinpos<16; pinpos++)

{

pin = 0x01< if(pin == (pin & currency))

{

GPIOx->MODER &= ~(3 << (2*pinpos));

GPIOx->MODER |= (((uint32_t)GPIO_InitStruct->GPIO_Mode) << (2*pinpos));

GPIOx->PUPDR &= ~(3 << ((2*pinpos)));

GPIOx->PUPDR |= (((uint32_t)GPIO_InitStruct->GPIO_PuPd)) << (2*pinpos);

if((GPIO_InitStruct->GPIO_Mode == GPIO_Mode_OUT) ||

(GPIO_InitStruct->GPIO_Mode == GPIO_Mode_AF))

{

GPIOx->OSPEEDR &= ~(3 << (2*pinpos));

GPIOx->OSPEEDR |= ((uint32_t)(GPIO_InitStruct->GPIO_Speed)<<(2*pinpos));

GPIOx->OTYPER &= ~(1 << (pinpos));

GPIOx->OTYPER |= (uint16_t)((GPIO_InitStruct->GPIO_OType)<<(pinpos));

}

}

}

}


stm32f4xx_gpio.h

#include


#define GPIO_Pin_0       ((uint16_t)0x0001)

#define GPIO_Pin_1       ((uint16_t)0x0002)

#define GPIO_Pin_2       ((uint16_t)0x0004)

#define GPIO_Pin_3       ((uint16_t)0x0008)

#define GPIO_Pin_4       ((uint16_t)0x0010)

#define GPIO_Pin_5       ((uint16_t)0x0020)

#define GPIO_Pin_6       ((uint16_t)0x0040)

#define GPIO_Pin_7       ((uint16_t)0x0080)

#define GPIO_Pin_8       ((uint16_t)0x0100)

#define GPIO_Pin_9       ((uint16_t)0x0200)

#define GPIO_Pin_10      ((uint16_t)0x0400)

#define GPIO_Pin_11      ((uint16_t)0x0800)

#define GPIO_Pin_12      ((uint16_t)0x1000)

#define GPIO_Pin_13      ((uint16_t)0x2000)

#define GPIO_Pin_14      ((uint16_t)0x4000)

#define GPIO_Pin_15      ((uint16_t)0x8000)

#define GPIO_Pin_ALL     ((uint16_t)0xffff)


//Initialize GPIO

/*

typedef struct

{

uint32_t    GPIO_Pin;    

uint8_t     GPIO_Mode;   

uint8_t     GPIO_Speed;  

uint8_t     GPIO_OType;  

uint8_t     GPIO_PuPd;   

}GPIO_InitTypeDef;

*/


//-----------------------------------------------------------

//GPIO 

typedef enum

{

GPIO_Mode_IN  = 0X00,   

GPIO_Mode_OUT = 0X01,   

GPIO_Mode_AF  = 0X02,   

GPIO_Mode_AN  = 0X03    

}GPIOMode_TypeDef;



typedef enum

{

GPIO_OType_PP   = 0x00,  

GPIO_OType_OD   = 0x01   

}GPIOOType_TypeDef;



typedef enum

{

GPIO_Speed_2MHz    = 0x00,  //2MHz

GPIO_Speed_25MHz   = 0x01,  //25MHz

GPIO_Speed_50MHz   = 0x10,  //50MHz

GPIO_Speed_100MHz  = 0x11   //100MHz

}GPIOSpeed_TypeDef;



typedef enum

{

GPIO_PuPd_NOPULL = 0X00,

GPIO_PuPd_UP     = 0X01,

GPIO_PuPd_DOWN   = 0X02 

}GPIOPuPd_TypeDef;

//-----------------------------------------------------------


typedef struct

{

uint32_t           GPIO_Pin;     

GPIOMode_TypeDef   GPIO_Mode;    

GPIOOType_TypeDef  GPIO_OType;   

GPIOSpeed_TypeDef  GPIO_Speed;   

GPIOPuPd_TypeDef   GPIO_PuPd;   

}GPIO_InitTypeDef;



void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);

void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);

void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);



关键字:STM32F429  LED  Library  Function 引用地址:STM32F429 >> 2. LED_Library_Function

上一篇:STM32F429 >> 14. TIM_(一)_基本定时器
下一篇:STM32F429 >> 3. STM32 固件库

推荐阅读最新更新时间:2024-11-13 13:50

洗不白之冤 LED寿命短电解电容没有错
常常听说现在LED灯具之所以寿命短主要是电源的寿命短,而电源之所以寿命短是因为电解电容寿命短。这些说法也有一定道理。因为市面上充斥着大量的短寿命低劣的电解电容,再加上现在都在拼价钱,所以一些厂家不顾质量而去采用这些低劣的短寿命电解电容,结果就得出了上述结论。   那么实际情况到底是怎么样的呢?    1.电解电容的寿命取决于它工作时的环境温度   电解电容的寿命是怎么定义的呢?当然是以小时定义的。但是如果一个电解电容的寿命指标是1,000小时,并不是说一千小时以后这个电解电容就坏了,不是的,而只是说这个电解电容的容量在1000小时以后容量减小了一半,本来是20uF,现在只有10uF了。   另外,电解电容的寿命指标还
[电源管理]
洗不白之冤 <font color='red'>LED</font>寿命短电解电容没有错
提高白光LED使用寿命 需要在散热结构上作何“文章”?
过去 LED 业者为了获利充分的白光LED光束,曾经开发大尺寸 LED芯片 试图藉此方式达成预期目标,不过实际上白光LED的施加电力持续超过1W以上时光束反而会下降,发光效率则相对降低20~30%,换句话说白光LED的亮度如果要比传统LED大数倍,消费电力特性希望超越荧光灯的话,就必需先克服下列的四大课题,包括,抑制温升、确保使用寿命、改善发光效率,以及发光特性均等化。   有关温升问题具体方法是降低封装的热阻抗;维持LED的使用寿命具体方法,是改善芯片外形、采用小型芯片;改善LED的发光效率具体方法是改善芯片结构、采用小型芯片;至于发光特性均匀化具体方法是LED的改善封装方法,而这些方法已经陆续被开发中。    解决封装的散热问
[电源管理]
消费类电子产品多彩背光LED灯的设计方法
消费类电子产品面向的主要是年轻的消费群体,为了吸引消费者,工程人员总是想方设法让产品的功能变得更加的完善,外表变得更加的绚丽。然而,在产品成本高透明度以及研发周期短的情况下,如何提升产品的竞争力,这已经成为研发人员所面临的一个事实。当前流行的MP3/MP4、手机等消费类电子产品添加七色或者多色背光的功能就是一个非常典型的例子,其所付出的仅仅只是几个LED(发光二极管)的成本,却达到了让产品的操作界面更加绚丽和个性化。   应用范围   彩色背光应用最典型的是应用在MP3产品的LCD背光,手机键盘灯背光,以及一些其他需要背光显示的产品。   传统7色背光设计方法,7色背光的实现方法,硬件如下。只利用了主控制器的3条GP
[模拟电子]
消费类电子产品多彩背光<font color='red'>LED</font>灯的设计方法
氙气大灯和LED大灯哪个好,LED车灯的优缺点三分钟看懂主流
说起车灯,相信各位车主朋友一定都深有感触,如果没有车灯我们夜间行车将会是如何的场景呢?而它在经历了数百年的变迁之后,已经从最初的煤油灯、白炽灯发展到现在的激光大灯,足可以说汇集成了一部辉煌壮阔的发展史。想想从当初的弱不禁风到现在各种逆天颜值、照射无死角,这简直就是花式逆袭的节奏!此时此刻突然想起了某女歌手的一首“全都是泡(tao)沫(lu)”,你真的是够了!so,接下来小编就和大家聊聊它究竟是如何超神的! 1.0时代:卤素大灯 众所周知,日常生活中我们使用最多的光源就是白炽灯,白炽灯的原理是通过给钨丝导电发热至白炽状态而发出的光亮。虽然白炽灯的亮度已经足够用,但这并不能掩盖它的一大致命劣势,那就是寿命短;一旦钨丝烧断,那么这个
[电源管理]
在2022年其车用LED产值将达到19亿美金
集邦咨询LED研究中心(LEDinside)最新《2018中国车用照明市场报告》显示,从2017年开始中国本土车厂的制造质量与市占率逐步上升,自有品牌销售量也逐年成长,本地车厂的产品逐渐往中价位靠拢。虽然限排摇号措施降低购车意愿,但随着人民年均所得增加,汽车保有辆还是具有可观的成长空间。2017年中国汽车出货量已达到2,380万辆,预估在2018年仍将可达到2,550万辆的水平。 传统乘用车市场LED产值及趋势 中国乘用车消费量发展迅速,LED在车辆的渗透率也已显著提升,连带使得车灯产业发展迅速。传统乘用车基数庞大,LEDinside预估在2022年其车用LED产值将达到19亿美金,2017-2022年复合成长率达到22%
[电源管理]
荣创Mini LED 明年Q3问世
面板厂、LED厂大力推动Mini LED成为背光源,荣创(3437)昨日参加法说会时表示,Micro LED有比较高的门槛与技术障碍,但是Mini LED明年导入TV背光的可能性很高,明年的成本有望再下滑,荣创预计最快第三季,最慢第四季底推出Mini LED背光产品。 荣创昨(27)日应券商邀请参加法说会,法人聚焦Micro LED、Mini LED以及大股东日亚化辞董事卖股,荣创一一回应。荣创首先定调Mini LED为Micro LED之前的过度产品,并已经与客户朝Mini LED背光源的方向合作开发,以4k8K的TV来计算,对Mini LED的消耗量1亿颗起跳,就算是65吋TV的消耗量也至少是万颗起跳,这也是荣创目前背光占
[手机便携]
液晶显示之殇(一)—光源篇
最近看到报道说LG的OLED电视已经量产了,这让笔者感叹科技进步的同时,更多的想到的是佛家的一个词:“轮回”,所谓有起必有灭,液晶显示技术被其他更先进显示技术所替代的时刻似乎已经不可避免的来临了,就像当初它取代CRT显示一样。 想起05年笔者刚毕业就进入这行,彼时液晶行业是何等的红火,液晶电视的价格还是以万元为单位,想起当年跟着一帮兄弟赶制样品每天加班到12点,虽然辛苦但是看着自己设计的产品一个个投入量产的满足,笔者也是百感交集。好歹也为这个产业奋斗过,就为它写点什么吧,也算留个念想…   从何说起呢,液晶显示最大的诟病就是不能自主发光,那就先从光源说起吧…   (一)     光源篇 在这里笔者先扫个
[嵌入式]
一文掌握UV LED在空净消杀领域的主要应用
近年来,随着科技的日新月异,LED领域也发展迅速。作为一种新型LED,UV LED凭借其众多优秀特性而备受瞩目。 本文将介绍UV LED的主要性能、背后原理以及在空净消杀相关领域的应用。 一、走进UV LED 紫外线(Ultra Violet)是指太阳光线的可视光线中(赤橙黄绿青蓝紫)紫色以外、肉眼看不见的光线;是电磁波谱中,波长从10nm到400nm辐射的总称,缩写为UV LED。根据光谱,UV LED可用多种方法进行分类。其中,按太阳光的ISO分类标准ISO-DIS-21348分类法可分为:UVA(400~315nm)、NUV(近紫外,400~300nm)、UVB(315~280nm)、MUV(中紫外,300~200
[电源管理]
一文掌握UV <font color='red'>LED</font>在空净消杀领域的主要应用
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved