历史上的今天
返回首页

历史上的今天

今天是:2024年08月29日(星期四)

正在发生

2019年08月29日 | STM32F429 >> 2. LED_Library_Function

2019-08-29 来源:eefocus

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);



推荐阅读

史海拾趣

恒连电子(EVERCOM)公司的发展小趣事

恒连电子成立于XX年代初,当时正值电子行业的快速发展期。创始人张先生凭借对电子技术的敏锐洞察力和对市场趋势的精准把握,决定投身于电子行业。然而,初创时期的公司面临着资金短缺、技术团队匮乏以及市场竞争激烈等多重挑战。张先生带领团队日夜兼程,通过自主研发和不断创新,逐渐在市场中站稳脚跟。他们首先推出了几款性能稳定、价格合理的电子产品,赢得了客户的信赖。随着产品的逐步推广,恒连电子逐渐在市场中打开了局面。

GradConn Ltd公司的发展小趣事

GradConn始终将技术创新作为公司发展的核心驱动力。公司拥有一支专业的研发团队,致力于开发新型连接器和电缆组件,以满足不断变化的市场需求。同时,GradConn的所有工厂均通过了ISO 9001:2015和ISO 14001:2015等国际质量管理体系认证,确保了产品的高质量和环境友好性。这些认证不仅提升了GradConn的品牌形象,还为其在全球市场上赢得了更多客户的信任和支持。

Compound Photonics公司的发展小趣事

在公司发展初期,Compound Photonics曾专注于一款微投显示模组的研发。然而,这个项目并未如预期般顺利,最终宣告失败。面对挫折,公司并没有放弃,而是迅速调整战略,转向LCoS方向。这一决策不仅让公司避免了进一步的损失,还为其在LCoS领域的发展打开了新的大门。

ACEINNA公司的发展小趣事

尽管在Micro LED领域遭遇了挫折,但Compound Photonics并没有因此沉沦。相反,公司凭借其在LCoS领域的深厚技术积累和良好的市场口碑,吸引了众多潜在合作伙伴的关注。其中,Snap公司表现出了强烈的收购意向。这一消息传出后,Compound Photonics的市场价值得到了进一步提升,公司的发展前景也变得更加广阔。

这五个故事展示了Compound Photonics公司在电子行业里发展起来的一些关键节点和重大事件。从收购Syntax-Brillian开启微显示领域之路,到微投显示模组项目失利后转向LCoS方向,再到成为业内知名LCoS方案商并与Lumus合作,以及与Plessey合作开发Micro LED产品遭遇Meta竞争,最后到Snap的收购意向,每一个故事都反映了公司在不同阶段的挑战与机遇。通过这些故事,我们可以看到Compound Photonics公司在电子行业里不断进取、创新发展的精神风貌。

Daburn公司的发展小趣事

随着公司规模的不断扩大,Daburn开始积极拓展国际市场。公司通过参加国际展览、与国外企业建立合作关系等方式,将产品推向全球市场。同时,Daburn还注重与当地企业的合作,共同开发符合当地市场需求的产品。这种市场拓展策略让Daburn在国际舞台上获得了更多的机会和挑战。

CW Industries公司的发展小趣事

面对电子信息行业的快速发展和变化,CW Industries始终保持着敏锐的市场洞察力。公司紧跟技术潮流,不断调整和优化产品结构,以满足客户不断变化的需求。例如,随着智能家居和物联网的兴起,CW Industries积极开发适用于这些新兴领域的产品和解决方案。这种灵活应变的能力使得CW Industries在电子行业中始终保持着领先地位,并为公司带来了持续的增长和发展。

问答坊 | AI 解惑

视频消费电子设备的无线连接预计强劲增长

本帖最后由 jameswangsynnex 于 2015-3-3 19:59 编辑 据iSuppli公司,消费电子(CE)产业正在进入连接无处不在的新时代,刺激装备高带宽无线视频接口解决方案的视频导向CE设备蓬勃发展。  iSuppli公司预测,2014年具有高带宽无线视频接口的支持视 ...…

查看全部问答>

波特率问题

我想知道为什么波特率越大串口通讯时数据越容易出错…

查看全部问答>

如何让两个驱动共用一个全局变量

我想在两个驱动里调用一个全局变量,并且 一个驱动调用这个变量并改变它,然后另外一个程序的这个变量也随之改变,不知道能做到这样吗??…

查看全部问答>

烧nk.bin和刷rom有什么区别

初学,不太明白,这两个是一样的吗? 另外,刷rom说的解锁radio,这个radio是什么?是谁提供的?我看用pb定制的时候,没有radio组件。 …

查看全部问答>

我是学国际经济与贸易的的,以前没学过电子,由于工作中的需要,想了解CCL和FR-4方面的知识,请问在网上哪里能够找到这方面的知识啊?另外有哪些书或资料有讲解啊?

我是学国际经济与贸易的的,以前没学过电子,由于工作中的需要,想了解CCL和FR-4方面的知识,请问在网上哪里能够找到这方面的知识啊?另外有哪些书或资料有讲解啊?…

查看全部问答>

求友善之臂2440系列的开发板

求友善之臂2440系列的开发板,有意的联系我,QQ84025463…

查看全部问答>

stm32usb驱动哪里有,谢谢

在做usb实验的时候电脑发现识别不了板子的usb设备,电脑一侧的驱动谁有…

查看全部问答>

求 基于stm32的串口摄像头驱动程序设计

求 基于stm32的串口摄像头驱动程序设计  的完整程序   我用的是mdk和jlink进行仿真调试!谢谢了!急!!!!…

查看全部问答>