欢迎来到冰豆网! | 帮助中心 分享价值,成长自我!
冰豆网
全部分类
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • 党团工作>
  • ImageVerifierCode 换一换
    首页 冰豆网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    超经典的STM32学习笔记第一章GPIO口.docx

    • 资源ID:23331235       资源大小:59.81KB        全文页数:16页
    • 资源格式: DOCX        下载积分:10金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    超经典的STM32学习笔记第一章GPIO口.docx

    1、超经典的STM32学习笔记第一章GPIO口固件库中与GPIO有关的函数主要有:函数名描述GPIO_Init根据GPIO_InitStruct中指定的参数初始化外设GPIOx寄存器GPIO_ReadInputDataBit读取指定端口管脚的输入GPIO_ReadInputData读取指定的GPIO端口输入GPIO_ReadOutputDataBit读取指定端口管脚的输出GPIO_ReadOutputData读取指定的GPIO端口输出GPIO_SetBits设置指定的数据端口位GPIO_ResetBits清除指定的数据端口位GPIO_WriteBit设置或者清除指定的数据端口位GPIO_Write

    2、向指定GPIO数据端口写入数据函数GPIO_Init函数名GPIO_Init函数原形void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)功能描述根据GPIO_InitStruct中指定的参数初始化外设GPIOx寄存器输入参数1GPIOx:x可以是A,B,C,D或者E,来选择GPIO外设输入参数2GPIO_InitStruct:指向结构GPIO_InitTypeDef的指针,包含了外设GPIO的配置信息参阅Section:GPIO_InitTypeDef查阅更多该参数允许取值范围输出参数无返回值无先决条件无被

    3、调用函数无:GPIO_TypeDef为一结构体:typedef struct _IO uint32_t CRL; / 端口配置低寄存器 _IO uint32_t CRH; / 端口配置高寄存器 _IO uint32_t IDR; / 端口输入数据寄存器 _IO uint32_t ODR; _IO uint32_t BSRR; _IO uint32_t BRR; _IO uint32_t LCKR; GPIO_TypeDef;GPIOx为一宏定义:#define GPIOA (GPIO_TypeDef *) GPIOA_BASE)其中GPIOA_BASE=0x40010800,即PA口的起始地址

    4、,#define GPIOA (GPIO_TypeDef *) GPIOA_BASE)这句语句的作用就是将GPIOA指定到PA口的入口地址中,也就是说将PA口的寄存器组取名为GPIOA。:GPIO_InitTypeDef为结构体:typedef struct uint16_t GPIO_Pin; GPIOSpeed_TypeDef GPIO_Speed; GPIOMode_TypeDef GPIO_Mode;GPIO_InitTypeDef;其中GPIO_Pin可取的值:GPIO_Pin描述GPIO_Pin_None无管脚被选中 GPIO_Pin_0选中管脚0GPIO_Pin_15选中管脚15

    5、GPIO_Pin_All选中全部管脚GPIO_Speed可取的值:GPIO_Speed描述GPIO_Speed_10MHz最高输出速率10MHzGPIO_Speed_2MHz最高输出速率2MHzGPIO_Speed_50MHz最高输出速率50MHzGPIO_Mode可取的值:GPIO_Mode描述GPIO_Mode_AIN模拟输入GPIO_Mode_IN_FLOATING浮空输入GPIO_Mode_IPD下拉输入GPIO_Mode_IPU上拉输入GPIO_Mode_Out_OD开漏输出GPIO_Mode_Out_PP推挽输出GPIO_Mode_AF_OD复用开漏输出GPIO_Mode_AF_P

    6、P复用推挽输出外表看来函数GPIO_Init只有两个输入参数,实则4个输入参数。第二个结构体中包括了三个参数,这三个参数分别是对管脚的端口,速度,和模式进行配置。这三个参数的值其实就是一些宏定义的数值。对这三个参数的选择就相当于对对应的寄存器进行配置。第一个结构体是寄存器映射,它定义在文件“”中,他的作用就是将与管脚有关的寄存器名字与硬件地址对应起来,例如寄存器CRL就相当于地址:0x40010800.第一与第二个结构体相结合并可以对某端口进行初始化了。:例:配置PA口为浮空输入/定义一个名为GPIO_InitStructure的GPIO_InitTypeDef型结构体GPIO_InitTyp

    7、eDef GPIO_InitStructure;/选中所有的端口GPIO_InitStructure. Gpio_Pin = GPIO_Pin_All;/选择端口的速度为10MGPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz; /选择模式为浮空输入 GPIO_InitStructure.GPIO_Mode =GPIO_Mode_IN_FLOATING;/完成初始化GPIO_Init(GPIOA, &GPIO_InitStructure);函数GPIO_ReadInputDataBit函数名GPIO_ReadInputDataBit函数原形u8 G

    8、PIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, u16 GPIO_Pin)功能描述读取指定端口管脚的输入输入参数1GPIOx:x可以是A,B,C,D或者E,来选择GPIO外设输入参数2GPIO_Pin:待读取的端口位输出参数无返回值输入端口管脚值先决条件无被调用函数无:例:读取口的输入值u8 ReadValue; ReadValue = GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_7);1.3函数GPIO_ReadInputData函数名GPIO_ReadInputData函数原形u16 GPIO_ReadInputData(

    9、GPIO_TypeDef* GPIOx)功能描述读取指定的GPIO端口输入输入参数1GPIOx:x可以是A,B,C,D或者E,来选择GPIO外设输入参数2GPIO_Pin:待读取的端口位输出参数无返回值GPIO输入数据端口值先决条件无被调用函数无:例:读取PC口的输入值U16 ReadValue; ReadValue = GPIO_ReadInputData(GPIOC);1.4函数GPIO_SetBits函数名GPIO_SetBits函数原形void GPIO_SetBits(GPIO_TypeDef* GPIOx, u16 GPIO_Pin)功能描述设置指定的数据端口位输入参数1GPIOx

    10、:x可以是A,B,C,D或者E,来选择GPIO外设输入参数2GPIO_Pin:待设置的端口位该参数可以取GPIO_Pin_x(x可以是0-15)的任意组合输出参数无返回值无先决条件无被调用函数无.1:例:设置和口为高电平GPIO_SetBits(GPIOA,GPIO_Pin_1 | GPIO_Pin_2);1.5函数GPIO_RsetBits函数名GPIO_ResetBits函数原形void GPIO_ResetBits(GPIO_TypeDef* GPIOx, u16 GPIO_Pin)功能描述清除指定的数据端口位输入参数1GPIOx:x可以是A,B,C,D或者E,来选择GPIO外设输入参数

    11、2GPIO_Pin:待设置的端口位该参数可以取GPIO_Pin_x(x可以是0-15)的任意组合输出参数无返回值无先决条件无被调用函数无:例:设置和口为低电平GPIO_RsetBits(GPIOA,GPIO_Pin_1 | GPIO_Pin_2);1.6函数GPIO_WriteBit函数名GPIO_WriteBit函数原形void GPIO_WriteBit(GPIO_TypeDef* GPIOx, u16 GPIO_Pin, BitAction BitVal)功能描述设置或者清除指定的数据端口位输入参数1GPIOx:x可以是A,B,C,D或者E,来选择GPIO外设输入参数2GPIO_Pin:

    12、待设置的端口位该参数可以取GPIO_Pin_x(x可以是0-15)的任意组合输入参数3BitVal: 该参数指定了待写入的值该参数必须取枚举BitAction的其中一个值Bit_RESET: 清除数据端口位Bit_SET: 设置数据端口位返回值无先决条件无被调用函数无输出参数无:例:设置口为低电平GPIO_WriteBit(GPIOA,GPIO_Pin_1 | GPIO_Pin_2,Bit_RESET);1.7函数GPIO_Write函数名GPIO_Write函数原形void GPIO_Write(GPIO_TypeDef* GPIOx, u16 PortVal)功能描述向指定GPIO数据端口

    13、写入数据输入参数1GPIOx:x可以是A,B,C,D或者E,来选择GPIO外设输入参数2PortVal: 待写入端口数据寄存器的值返回值无先决条件无被调用函数无输出参数无:例:向PA口写入一数据GPIO_Write(GPIOA,0X0101);1.8:要初始化某端口时还需打开该端口的时钟及配置系统的时钟源,与之相关的两个函数为RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOD, ENABLE)和SystemInit(); 2:将GOIO口配置成外部中断的输入口 与NVIC相关的函数 1NVIC_PriorityGroupConfig函数名NVIC_Prio

    14、rityGroupConfig函数原形Void NVIC_PriorityGroupConfig(u32 NVIC_PriorityGroup)功能描述设置优先级分组:先占优先级和从优先级输入参数NVIC_PriorityGroup:优先级分组位长度参阅Section:NVIC_PriorityGroup 查阅更多该参数允许取值范围输出参数无返回值无先决条件优先级分组只能设置一次被调用函数无NVIC_PriorityGroup的值:NVIC_PriorityGroup描述NVIC_PriorityGroup_0先占优先级0位从优先级4位NVIC_PriorityGroup_1先占优先级1位从优

    15、先级3位NVIC_PriorityGroup_2先占优先级2位从优先级2位NVIC_PriorityGroup_3先占优先级3位从优先级1位NVIC_PriorityGroup_4先占优先级4位从优先级0位2NVIC_Init函数名NVIC_Init函数原形void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct)功能描述根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器输入参数NVIC_InitStruct:指向结构NVIC_InitTypeDef的指针,包含了外设GPIO的配置信息参阅Section:NVIC_InitTypeDe

    16、f查阅更多该参数允许取值范围输出参数无返回值无先决条件无被调用函数无NVIC_InitTypeDef structure NVIC_InitTypeDef定义于文件“stm32f10x_nvic.h”: typedef struct u8 NVIC_IRQChannel; u8 NVIC_IRQChannelPreemptionPriority; u8 NVIC_IRQChannelSubPriority; FunctionalState NVIC_IRQChannelCmd; NVIC_InitTypeDef;NVIC_IRQChannel 该参数用以指定IRQ通道。Table 272. 给

    17、出了该参数可取的值NVIC_IRQChannel描述WWDG_IRQChannel窗口看门狗中断PVD_IRQChannelPVD通过EXTI探测中断TAMPER_IRQChannel篡改中断RTC_IRQChannelRTC全局中断FlashItf_IRQChannelFLASH全局中断RCC_IRQChannelRCC全局中断EXTI0_IRQChannel外部中断线0中断。EXTI9_5_IRQChannel外部中断线9-5中断EXTI15_10_IRQChannel外部中断线15-10中断NVIC_IRQChannelPreemptionPriority 该参数设置了成员NVIC_IR

    18、QChannel中的先占优先级,Table. 273 列举了该参数的取值。NVIC_IRQChannelSubPriority 该参数设置了成员NVIC_IRQChannel中的从优先级,Table. 273 列举了该参数的取值。Table. 273 给出了由函数NVIC_PriorityGroupConfig设置的先占优先级和从优先级可取的值Table 273. 先占优先级和从优先级值12NVIC_PriorityGroupNVIC_IRQChannel的先占优先级NVIC_IRQChannel的从优先级描述NVIC_PriorityGroup_000-15先占优先级0位从优先级4位NVIC

    19、_PriorityGroup_10-10-7先占优先级1位从优先级3位NVIC_PriorityGroup_20-30-3先占优先级2位从优先级2位NVIC_PriorityGroup_30-70-1先占优先级3位从优先级1位NVIC_PriorityGroup_40-150先占优先级4位从优先级0位NVIC_IRQChannelCmd 该参数指定了在成员NVIC_IRQChannel中定义的IRQ通道被使能还是失能。这个参数取值为ENABLE或者DISABLE。例: NVIC_InitTypeDef NVIC_InitStructure; /*设置优先级分组*/ NVIC_PriorityG

    20、roupConfig(NVIC_PriorityGroup_1); /* 选择外部中断线15-10中断*/ NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQChannel; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; /*使能该通道*/NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_InitStructure(&NV

    21、IC_InitStructure);2.2与EXTI相关的函数1GPIO_EXTILineConfig函数名GPIO_EXTILineConfig函数原形void GPIO_EXTILineConfig(u8 GPIO_PortSource, u8 GPIO_PinSource)功能描述选择GPIO管脚用作外部中断线路输入参数1GPIO_PortSource: 选择用作外部中断线源的GPIO端口参阅Section:GPIO_PortSource查阅更多该参数允许取值范围输入参数2GPIO_PinSource:待设置的外部中断线路该参数可以取GPIO_PinSourcex(x可以是0-15)输出

    22、参数无返回值无先决条件无被调用函数无例:选择PA13为中断的输入口GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource13);(2) EXTI_Init函数名EXTI_Init函数原形void EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct)功能描述根据EXTI_InitStruct中指定的参数初始化外设EXTI寄存器输入参数EXTI_InitStruct:指向结构EXTI_InitTypeDef的指针,包含了外设EXTI的配置信息参阅Section:EXTI_InitTypeDef查阅更多该参

    23、数允许取值范围输出参数无返回值无先决条件无被调用函数无EXTI_InitTypeDef structure EXTI_InitTypeDef定义于文件“stm32f10x_exti.h”: typedef struct u32 EXTI_Line; EXTIMode_TypeDef EXTI_Mode; EXTIrigger_TypeDef EXTI_Trigger; FunctionalState EXTI_LineCmd; EXTI_InitTypeDef; EXTI_Line EXTI_Line选择了待使能或者失能的外部线路。Table 132. 给出了该参数可取的值EXTI_Line0

    24、外部中断线0.EXTI_Line18外部中断线18EXTI_ModeEXTI_Mode设置了被使能线路的模式。Table 133. 给出了该参数可取的值EXTI_Mode描述EXTI_Mode_Event设置EXTI线路为事件请求EXTI_Mode_Interrupt设置EXTI线路为中断请求EXTI_TriggerEXTI_Trigger设置了被使能线路的触发边沿。Table 134. 给出了该参数可取的值EXTI_Mode描述EXTI_Trigger_Falling设置输入线路下降沿为中断请求EXTI_Trigger_Rising设置输入线路上升沿为中断请求EXTI_Trigger_Ris

    25、ing_Falling设置输入线路上升沿和下降沿为中断请求EXTI_LineCmdEXTI_LineCmd用来定义选中线路的新状态。它可以被设为ENABLE或者DISABLE。例:使能PA13为中断的输入通道,且下降沿触发EXTI_InitStructure.EXTI_Line = EXTI_Line13; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; /下降沿中断 /*使能中断*/ EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure);


    注意事项

    本文(超经典的STM32学习笔记第一章GPIO口.docx)为本站会员主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 冰点文档网站版权所有

    经营许可证编号:鄂ICP备2022015515号-1

    收起
    展开