ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:59.90KB ,
资源ID:19169563      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/19169563.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

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

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

1、GPIO_InitTypeDef查阅更多该参数允许取值范围输出参数无返回值先决条件被调用函数1.1.1: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 *

2、) GPIOA_BASE)其中GPIOA_BASE=0x40010800,即PA口的起始地址,#define GPIOA (GPIO_TypeDef *) GPIOA_BASE)这句语句的作用就是将GPIOA指定到PA口的入口地址中,也就是说将PA口的寄存器组取名为GPIOA。1.1.2:GPIO_InitTypeDef为结构体: uint16_t GPIO_Pin; GPIOSpeed_TypeDef GPIO_Speed; GPIOMode_TypeDef GPIO_Mode;GPIO_InitTypeDef;其中GPIO_Pin可取的值:GPIO_PinGPIO_Pin_None无管脚被

3、选中 GPIO_Pin_0选中管脚0GPIO_Pin_15选中管脚15GPIO_Pin_All选中全部管脚GPIO_Speed可取的值:GPIO_SpeedGPIO_Speed_10MHz最高输出速率10MHzGPIO_Speed_2MHz最高输出速率2MHzGPIO_Speed_50MHz最高输出速率50MHzGPIO_Mode可取的值:GPIO_ModeGPIO_Mode_AIN模拟输入GPIO_Mode_IN_FLOATING浮空输入GPIO_Mode_IPD下拉输入GPIO_Mode_IPU上拉输入GPIO_Mode_Out_OD开漏输出GPIO_Mode_Out_PP推挽输出GPIO

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

5、_InitStructure的GPIO_InitTypeDef型结构体GPIO_InitTypeDef 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);1.2函数GPI

6、O_ReadInputDataBitu8 GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, u16 GPIO_Pin)GPIO_Pin:待读取的端口位输入端口管脚值1.2.1:读取PB.7口的输入值u8 ReadValue; ReadValue = GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_7);1.3函数GPIO_ReadInputDatau16 GPIO_ReadInputData(GPIO_TypeDef* GPIOx)GPIO输入数据端口值1.3.1:读取PC口的输入值U16 ReadValue; ReadValue

7、 = GPIO_ReadInputData(GPIOC);1.4函数GPIO_SetBitsvoid GPIO_SetBits(GPIO_TypeDef* GPIOx, u16 GPIO_Pin)待设置的端口位该参数可以取GPIO_Pin_x(x可以是0-15)的任意组合1.4.1:设置PA.1和PA.2口为高电平GPIO_SetBits(GPIOA,GPIO_Pin_1 | GPIO_Pin_2);1.5函数GPIO_RsetBitsvoid GPIO_ResetBits(GPIO_TypeDef* GPIOx, u16 GPIO_Pin)1.5.1:设置PA.1和PA.2口为低电平GPIO

8、_RsetBits(GPIOA,GPIO_Pin_1 | GPIO_Pin_2);1.6函数GPIO_WriteBitvoid GPIO_WriteBit(GPIO_TypeDef* GPIOx, u16 GPIO_Pin, BitAction BitVal)输入参数3BitVal: 该参数指定了待写入的值该参数必须取枚举BitAction的其中一个值Bit_RESET: 清除数据端口位Bit_SET: 设置数据端口位1.6.1:设置PA.1,PA.2口为低电平GPIO_WriteBit(GPIOA,GPIO_Pin_1 | GPIO_Pin_2,Bit_RESET);1.7函数GPIO_Wr

9、itevoid GPIO_Write(GPIO_TypeDef* GPIOx, u16 PortVal)PortVal: 待写入端口数据寄存器的值向PA口写入一数据GPIO_Write(GPIOA,0X0101);1.8:要初始化某端口时还需打开该端口的时钟及配置系统的时钟源,与之相关的两个函数为RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOD, ENABLE)和SystemInit();2:将GOIO口配置成外部中断的输入口2.1与NVIC相关的函数 (1)NVIC_PriorityGroupConfigNVIC_PriorityGroupConfig

10、Void NVIC_PriorityGroupConfig(u32 NVIC_PriorityGroup)设置优先级分组:先占优先级和从优先级输入参数NVIC_PriorityGroup:优先级分组位长度参阅Section:NVIC_PriorityGroup 查阅更多该参数允许取值范围优先级分组只能设置一次NVIC_PriorityGroup的值:NVIC_PriorityGroupNVIC_PriorityGroup_0先占优先级0位从优先级4位NVIC_PriorityGroup_1先占优先级1位从优先级3位NVIC_PriorityGroup_2先占优先级2位从优先级2位NVIC_Pr

11、iorityGroup_3先占优先级3位从优先级1位NVIC_PriorityGroup_4先占优先级4位从优先级0位(2)NVIC_InitNVIC_Initvoid NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct)根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器NVIC_InitStruct:指向结构NVIC_InitTypeDef的指针,包含了外设GPIO的配置信息NVIC_InitTypeDef查阅更多该参数允许取值范围NVIC_InitTypeDef structure NVIC_InitTypeDef定义于文件“stm3

12、2f10x_nvic.h”:typedef struct u8 NVIC_IRQChannel;u8 NVIC_IRQChannelPreemptionPriority;u8 NVIC_IRQChannelSubPriority;FunctionalState NVIC_IRQChannelCmd; NVIC_InitTypeDef;NVIC_IRQChannel 该参数用以指定IRQ通道。Table 272. 给出了该参数可取的值NVIC_IRQChannelWWDG_IRQChannel窗口看门狗中断PVD_IRQChannelPVD通过EXTI探测中断TAMPER_IRQChannel篡

13、改中断RTC_IRQChannelRTC全局中断FlashItf_IRQChannelFLASH全局中断RCC_IRQChannelRCC全局中断EXTI0_IRQChannel外部中断线0中断。EXTI9_5_IRQChannel外部中断线9-5中断EXTI15_10_IRQChannel外部中断线15-10中断NVIC_IRQChannelPreemptionPriority 该参数设置了成员NVIC_IRQChannel中的先占优先级,Table. 273 列举了该参数的取值。NVIC_IRQChannelSubPriority 该参数设置了成员NVIC_IRQChannel中的从优先级

14、,Table. 273 列举了该参数的取值。Table. 273 给出了由函数NVIC_PriorityGroupConfig设置的先占优先级和从优先级可取的值Table 273. 先占优先级和从优先级值(1)(2)NVIC_IRQChannel的先占优先级NVIC_IRQChannel的从优先级0-150-10-70-3NVIC_IRQChannelCmd 该参数指定了在成员NVIC_IRQChannel中定义的IRQ通道被使能还是失能。这个参数取值为ENABLE或者DISABLE。NVIC_InitTypeDef NVIC_InitStructure;/*设置优先级分组*/ NVIC_Pr

15、iorityGroupConfig(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(

16、&NVIC_InitStructure);2.2与EXTI相关的函数(1)GPIO_EXTILineConfigGPIO_EXTILineConfigvoid GPIO_EXTILineConfig(u8 GPIO_PortSource, u8 GPIO_PinSource)选择GPIO管脚用作外部中断线路GPIO_PortSource: 选择用作外部中断线源的GPIO端口GPIO_PortSource查阅更多该参数允许取值范围GPIO_PinSource:待设置的外部中断线路该参数可以取GPIO_PinSourcex(x可以是0-15)选择PA13为中断的输入口GPIO_EXTILineCo

17、nfig(GPIO_PortSourceGPIOA, GPIO_PinSource13);(2) EXTI_InitEXTI_Initvoid EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct)根据EXTI_InitStruct中指定的参数初始化外设EXTI寄存器EXTI_InitStruct:指向结构EXTI_InitTypeDef的指针,包含了外设EXTI的配置信息参阅Section:EXTI_InitTypeDef查阅更多该参数允许取值范围EXTI_InitTypeDef structure EXTI_InitTypeDef定义于文件“stm32f1

18、0x_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外部中断线0.EXTI_Line18外部中断线18EXTI_ModeEXTI_Mode设置了被使能线路的模式。Table 133. 给出了该参数可取的值EXTI_Mode_E

19、vent设置EXTI线路为事件请求EXTI_Mode_Interrupt设置EXTI线路为中断请求EXTI_TriggerEXTI_Trigger设置了被使能线路的触发边沿。Table 134. 给出了该参数可取的值EXTI_Trigger_Falling设置输入线路下降沿为中断请求EXTI_Trigger_Rising设置输入线路上升沿为中断请求EXTI_Trigger_Rising_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);

copyright@ 2008-2022 冰豆网网站版权所有

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