[技术文章搬家]STM32F207V学习笔记-GPIO

本文详细介绍了STM32F207V的GPIO配置,包括GPIO的寄存器、初始化代码解析,以及GPIO初始化配置的关键步骤。通过理解代码,作者深入探讨了如何设置寄存器位,以实现对硬件的控制。文中还提及了RCC_AHB1PeriphClockCmd函数在启动GPIO时钟的重要性,并分析了GPIO初始化过程中的一些复杂操作。
摘要由CSDN通过智能技术生成

还记得大学时候学嵌入式的第一个实验就是流水灯,那个时候我已经接触了GPIO(General-purpose I/Os),但是那时候只是简单复制粘贴代码而已并没有学到很多的东西。

GPIO有4个32位配置寄存器,分别是GPIOX_MODER,GPIOX_OTYPER,GPIOX_OSPEEDR和GPIOX_PUPDR,2个32位数据寄存器IDR和ODR,1个32位设置/复位寄存器BSRR,1个32位锁存器LCKR,2个32位功能选择寄存器AFRH,AFRL(名称的翻译都是本人私自翻译,原文见STM32F2XX数据手册),

下面是它一个基本结构图
这里写图片描述
因为比起硬件我还是对软件熟悉一点,所以我把主要精力用在研究代码上面,通过对代码的理解掌握如何设置寄存器位从而在硬件方面也有所突破。

下面贴出项目中的一段GPIO初始化配置代码:

void LEDInit(void)

{

    GPIO_InitTypeDef GPIO_InitStructure;        

    /* LED1 LED2 LED3 GPIO Config */        

    /* GPIOA ande GPIOC Periph clock enable */

    RCC_AHB1PeriphClockCmd(CSTXJT_GJY_LED_GPIO_CLK, ENABLE);



    /* Configure PC3 in output pushpull mode */

    GPIO_InitStructure.GPIO_Pin = CSTXJT_GJY_GPIO_Pin_LED1;

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

    GPIO_Init(CSTXJT_GJY_LED1_GPIO, &GPIO_InitStructure);



    /* Configure PA0 PA1 in output pushpull mode */

    GPIO_InitStructure.GPIO_Pin = CSTXJT_GJY_GPIO_Pin_LED2 | CSTXJT_GJY_GPIO_Pin_LED3;

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

    GPIO_Init(CSTXJT_GJY_LED2_3_GPIO, &GPIO_InitStructure)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值