历史上的今天
返回首页

历史上的今天

今天是:2025年01月06日(星期一)

正在发生

2020年01月06日 | STM32F4学习笔记之GPIO(使用固件库)

2020-01-06 来源:eefocus

1.使能GPIO的AHB时钟,使用函数:    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOx, ENABLE);


2.配置GPIO工作模式用GPIO_Init()函数

数据类型说明

typedef struct

{

  uint32_t GPIO_Pin;              //引脚配置

GPIOMode_TypeDef GPIO_Mode;  //GPIO_Mode_IN(输入),GPIO_Mode_OUT(输出),GPIO_Mode_AF(备用),GPIO_Mode_AN(模拟)


GPIOSpeed_TypeDef GPIO_Speed;// GPIO_Speed_2MHz,GPIO_Speed_25MHz,GPIO_Speed_50MHz,GPIO_Speed_100MHz

GPIOOType_TypeDef GPIO_OType;   // GPIO_OType_PP(推挽),GPIO_OType_OD(开漏)

GPIOPuPd_TypeDef GPIO_PuPd;     GPIO_PuPd_NOPULL(无),GPIO_PuPd_UP(上拉),GPIO_PuPd_DOWN(下拉)

}GPIO_InitTypeDef;


3.备用功能配置(除ADC和DAC外的所有非GPIO功能),使用函数

void GPIO_PinAFConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_PinSource, uint8_t GPIO_AF)

*          This GPIO_AF can be one of the following values:

  *            @arg GPIO_AF_RTC_50Hz: Connect RTC_50Hz pin to AF0 (default after reset) 

  *            @arg GPIO_AF_MCO: Connect MCO pin (MCO1 and MCO2) to AF0 (default after reset) 

  *            @arg GPIO_AF_TAMPER: Connect TAMPER pins (TAMPER_1 and TAMPER_2) to AF0 (default after reset) 

  *            @arg GPIO_AF_SWJ: Connect SWJ pins (SWD and JTAG)to AF0 (default after reset) 

  *            @arg GPIO_AF_TRACE: Connect TRACE pins to AF0 (default after reset)

  *            @arg GPIO_AF_TIM1: Connect TIM1 pins to AF1

  *            @arg GPIO_AF_TIM2: Connect TIM2 pins to AF1

  *            @arg GPIO_AF_TIM3: Connect TIM3 pins to AF2

  *            @arg GPIO_AF_TIM4: Connect TIM4 pins to AF2

  *            @arg GPIO_AF_TIM5: Connect TIM5 pins to AF2

  *            @arg GPIO_AF_TIM8: Connect TIM8 pins to AF3

  *            @arg GPIO_AF_TIM9: Connect TIM9 pins to AF3

  *            @arg GPIO_AF_TIM10: Connect TIM10 pins to AF3

  *            @arg GPIO_AF_TIM11: Connect TIM11 pins to AF3

  *            @arg GPIO_AF_I2C1: Connect I2C1 pins to AF4

  *            @arg GPIO_AF_I2C2: Connect I2C2 pins to AF4

  *            @arg GPIO_AF_I2C3: Connect I2C3 pins to AF4

  *            @arg GPIO_AF_SPI1: Connect SPI1 pins to AF5

  *            @arg GPIO_AF_SPI2: Connect SPI2/I2S2 pins to AF5

  *            @arg GPIO_AF_SPI3: Connect SPI3/I2S3 pins to AF6

  *            @arg GPIO_AF_I2S3ext: Connect I2S3ext pins to AF7

  *            @arg GPIO_AF_USART1: Connect USART1 pins to AF7

  *            @arg GPIO_AF_USART2: Connect USART2 pins to AF7

  *            @arg GPIO_AF_USART3: Connect USART3 pins to AF7

  *            @arg GPIO_AF_UART4: Connect UART4 pins to AF8

  *            @arg GPIO_AF_UART5: Connect UART5 pins to AF8

  *            @arg GPIO_AF_USART6: Connect USART6 pins to AF8

  *            @arg GPIO_AF_CAN1: Connect CAN1 pins to AF9

  *            @arg GPIO_AF_CAN2: Connect CAN2 pins to AF9

  *            @arg GPIO_AF_TIM12: Connect TIM12 pins to AF9

  *            @arg GPIO_AF_TIM13: Connect TIM13 pins to AF9

  *            @arg GPIO_AF_TIM14: Connect TIM14 pins to AF9

  *            @arg GPIO_AF_OTG_FS: Connect OTG_FS pins to AF10

  *            @arg GPIO_AF_OTG_HS: Connect OTG_HS pins to AF10

  *            @arg GPIO_AF_ETH: Connect ETHERNET pins to AF11

  *            @arg GPIO_AF_FSMC: Connect FSMC pins to AF12

  *            @arg GPIO_AF_OTG_HS_FS: Connect OTG HS (configured in FS) pins to AF12

  *            @arg GPIO_AF_SDIO: Connect SDIO pins to AF12

  *            @arg GPIO_AF_DCMI: Connect DCMI pins to AF13

  *            @arg GPIO_AF_EVENTOUT: Connect EVENTOUT pins to AF15



4.使用GPIO_ReadInputData(GPIO_TypeDef* GPIOx)和GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)读输入信号


5.使用GPIO_SetBits()/GPIO_ResetBits()设置输出引脚


6.上电或复位后,引脚备用功能都没启用(JTAG引脚除外),为悬浮输入状态


7.LSE引脚OSC32_IN 和OSC32_OUT(PC14 and PC15)的优先级高于GPIO


8.HSE引脚OSC_IN/OSC_OUT (PH0 / PH1)的优先级高于GPIO


例程:

int main(void)

{


GPIO_InitTypeDef  GPIO_InitStructure;

  /* GPIOG Periph clock enable */

  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);

  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13;

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

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;

  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;

  GPIO_Init(GPIOA,&GPIO_InitStructure);

  GPIO_SetBits(GPIOD, GPIO_Pin_12);

  GPIO_ResetBits(GPIOD, GPIO_Pin_13);



  while (1)

  {

  

if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)==0)

  

{


  GPIO_SetBits(GPIOD, GPIO_Pin_13);


  GPIO_ResetBits(GPIOD, GPIO_Pin_12);



}


else


{


  GPIO_SetBits(GPIOD, GPIO_Pin_12);


  GPIO_ResetBits(GPIOD, GPIO_Pin_13);




}

  }

}


推荐阅读

史海拾趣

FCI connector [富加宜连接器]公司的发展小趣事

在FCI的发展历程中,贝恩资本的收购起到了关键的作用。贝恩资本是一家在全球近75个工业领域和技术公司有着丰富投资经验的私有投资基金。在2005年收购FCI后,贝恩资本为FCI提供了强大的财力支持和国际业务扩展能力。这些支持使得FCI能够进一步巩固其在全球连接器市场的领先地位。

Capax Technologies Inc公司的发展小趣事

Capax Technologies Inc在市场定位和产品策略上表现出色。公司深入调研市场需求,发现高端电子设备市场对于高性能、高可靠性的组件有着旺盛的需求。于是,Capax Technologies Inc将产品定位为高端市场,专注于研发和生产高品质的电子组件。通过精准的市场定位和优质的产品,Capax Technologies Inc迅速在高端市场中占据了一席之地。

华大北斗(Allystar)公司的发展小趣事

随着国内市场的饱和,Capax Technologies Inc开始积极拓展海外市场。公司制定了详细的国际化战略,通过设立海外研发中心、建立销售网络等方式,逐步进入国际市场。在国际化的过程中,Capax Technologies Inc不仅提升了自身的技术水平和市场竞争力,还积累了丰富的国际经验,为公司的长远发展奠定了坚实基础。

Cortina Systems Inc公司的发展小趣事

Capax Technologies Inc的成功还得益于与各大企业的紧密合作。公司与多家知名的电子设备制造商建立了长期稳定的合作关系,为其提供高品质的组件和技术支持。通过与合作伙伴的共同努力,Capax Technologies Inc的产品得以广泛应用在各类电子设备中,进一步提升了公司的知名度和市场份额。

百佳(BAIJIA)公司的发展小趣事

百佳公司深知技术创新是企业发展的核心动力。因此,他们不断加大研发投入,引进先进技术和设备,推动产品的升级换代。通过不断创新,百佳公司成功开发出了一系列具有自主知识产权的电子产品,不仅提升了企业的核心竞争力,也为行业的发展做出了重要贡献。

鸿展光电(GPO)公司的发展小趣事

在多年的发展过程中,百佳公司始终坚守品质至上的原则。他们严格把控产品质量,从原材料采购到生产制造的每一个环节都进行严格的监控和检测。同时,百佳公司还注重提升客户服务水平,为客户提供及时、专业的技术支持和售后服务。正是这种对品质的坚持和对客户的尊重,使得百佳公司赢得了广大客户的信赖和长期合作。

这五个故事只是百佳公司在电子行业发展中的一部分缩影。它们展示了百佳公司从初创时期的艰苦与坚持,到抓住市场机遇迅速崛起,再到技术创新引领发展、拓展国际市场实现全球化布局,以及坚持品质至上赢得客户信赖的完整历程。这些故事不仅见证了百佳公司的成长和成功,也展现了电子行业的蓬勃发展和无限可能。

问答坊 | AI 解惑

可为汽车电子系统提供网络联系的灵活平台

由于汽车需要面对多种不同的路面及驾驶情况,因此车内的电子系统必须采用多种不同的网络标准,才可满足不同的性能要求。为了更好地满足不同网络标准的要求,车内电子系统的互连网络便一直朝着网中网模式的路向发展。网中网模式基本上以远程信息控制 ...…

查看全部问答>

pads2007

求PADS2007 layout 教程…

查看全部问答>

platform builder 5.0与win7兼容吗?

我想在win7上装platform builder 5.0,请问它能在win7下正常运行吗?…

查看全部问答>

wince 5.0 之最小系统裁剪

目前系统已经能够正常挂载和失败BINFS分区,当BINFS分区中只有一个文件时(比如放置NORFLASH驱动),系统能够启动且正确加载NORFLASH驱动。下面是启动日志 Booting kernel with clean memory configuration: Memory Sections: [0] : start: 8e78 ...…

查看全部问答>

求教Mipsel USB功能控制器模拟PL2303串口芯片的问题

问题如题: 现象如下: USB 功能控制器有数据发出, 但主机串口助手无法接收到数据, 也就是说PL2303的驱动层在进行转换时不能完成这个功能, 收发的PIPE与PL2303一至, 配置也基本一致。 以下是模拟芯片与PL2303芯片的实际捕获的数据。 …

查看全部问答>

小弟调查一下现在大家都用哪种PLC软件

大家好,小弟想调查一下现在画梯形图哪种PLC软件用得多啊?西门子?三菱?还是欧姆龙啊?哪个年龄段用的哪 种软件啊? 分别都是用于哪方面的控制? 谢谢了!…

查看全部问答>

WiLink 7.0 很强大!

WiLink 7.0 单芯片 WLAN、GPS、蓝牙和 FM 解决方案 做个手持设备很不错   …

查看全部问答>

富士通FM3的多功能串口(MFS)示例代码

        富士通FM3的多功能串口(MFS)功能很强,应用也很灵活,具体可看我前面的帖子《MB9B506R多功能串行接口》。        功能强,应用灵活带来的负面因素就是软件复杂。 ...…

查看全部问答>

菜鸟学习LaunchPad小结

我这一个月学习LaunchPad的小结,虽然很菜。。。但是,带新人入门啊~~~哈啊哈~~~…

查看全部问答>