欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    STM32单片机IO端口编程.ppt

    • 资源ID:5576233       资源大小:1.10MB        全文页数:73页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

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

    STM32单片机IO端口编程.ppt

    第2章 STM32单片机IO端口编程,2.1 STM32单片机管脚和命名规则,2.2 STM32单片机时钟 配置,2.3 STM32单片机I/O端口配置,2.4 STM32单片机I/O端编程步骤,STM32单片机管脚,STM32系列单片机命名规则,2.1 STM32单片机管脚和命名规则,STM32F103CBT6 共有37个I/O管脚:PA口 16脚+PB口16脚+PC口3脚+PD口2脚。,STM32单片机管脚:以STM32F103Cx为例,采用的封装形式LQFP48,一般而言,嵌入式系统在工作前,都要进行初始化工作,其中包括调用RCC_Configuration(复位和时钟设置)函数。用于系统复位和初始化STM32系列微控制器的时钟。,2.2 STM32单片机时钟配置,2.2.1 STM32时钟系统,2.2.2 RCC_Configuration(复位和时钟设置)函数,STM32系列微控制器中,有5个时钟源:HSI(High Speed Internal):高速内部时钟、HSE(High Speed External):高速外部时钟、LSI(Low Speed Internal):低速内部时钟、LSE(Low Speed External):低速外部时钟、PLL(Phase Locked Loop):锁相环倍频输出。其中的HSI、HSE、或PLL可被用来驱动系统时钟。其中的LSI、LSE作为二级时钟源。,STM32时钟系统结构图(P56),2.2.1 STM32时钟系统,其中的HSI、HSE、或PLL可被用来驱动系统时钟。,实际PLL是来自于HSI、HSE,外设总线:包括APB1(Advanced Peripheral Bus 1)和APB2(Advanced Peripheral Bus 2),APB2:用于高速外设APB1:用于低速外设,AMBA片上总线:已成为一种流行的工业片上总线标准。它包括AHB(Advanced High performance Bus)和APB(Advanced Peripheral Bus),前者作为系统总线,后者作为外设总线。,STM32系统结构图,连接在APB1(低速外设)上的设备:有,连接在APB2(高速外设)上的设备:有,连接在AHB(Advanced High performance Bus)上的设备:有,1、使能 挂接在APB1总线上的外设 对应的时钟 命令:,RCC_APB1PeriphClockCmd()函数,例如,使能TIM2对应的时钟:RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);,RCC_APB2PeriphClockCmd()函数,2、使能 挂接在APB2总线上的外设 对应的时钟 命令:,例如,使能GPIO端口对应的时钟:RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE,ENABLE);,3、使能 挂接在AHB总线上的外设 对应的时钟 命令:,RCC_AHBPeriphClockCmd()函数,例如,使能DMA对应的时钟:RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA,ENABLE);,使用操作符“|”可以一次选中上表中的一个或多个取值的组合作为该参数的值。,复位和时钟控制(RCC),STM32F103xx增强型模块框图,基于ARM Cortex内核的MCU 和 普通的8/16位单片机 在系统结构上 最大区别:,普通的8/16位单片机:只有1个系统时钟频率,而基于ARM Cortex内核的MCU:具有多个时钟频率,分别供给内核 和 不同外设模块使用。,本课程的学习难点之一:就是ARM时钟 比 单片机时钟 复杂得多。,为什么ARM时钟这么复杂?,原因二:时钟分开有助于实现低功耗。,原因一:高速时钟供中央处理器等高速设备使用,低速时钟供外设等低速设备使用。,时钟输出使能,STM32处理器因为低功耗的需要,各模块需要分别独立开启时钟。当需要使用某个外设模块时,记得一定要先使能对应的时钟。否则,这个外设不能工作。,2.2.2 RCC_Configuration()函数,1、RCC复位和时钟配置寄存器组,2、枚举类型ErrorStatus,3、RCC_Configuration():(复位和时钟设置)函数,(Reset and Clock Configuration(),复位和时钟设置 函数),STM32单片机的复位和时钟设置:共包括10个设置寄存器一个32位的时钟控制寄存器(RCC_CR)一个32位的时钟配置寄存器(RCC_CFGR)一个32位的时钟中断寄存器(RCC_CIR)一个32位的APB2外设复位寄存器(RCC_APB2RSTR)一个32位的APB1外设复位寄存器(RCC_APB1RSTR)一个32位的AHB外设时钟使能寄存器(RCC_AHBENR)一个32位的APB2外设时钟使能寄存器(RCC_APB2ENR)一个32位的APB1外设时钟使能寄存器(RCC_APB1ENR)一个32位的备份域控制寄存器(RCC_BDCR)一个32位的控制/状态寄存器(RCC_CSR),Backup domain control register(RCC_BDCR),详见参考手册 V10_1 第P60,编程时,时钟的具体配置是从RCC(Reset and Clock Configuration,复位和时钟配置)寄存器组开始。在固件库中,用结构体RCC_TypeDef 定义 RCC寄存器组:,在文件“stm32f10 x_map.h”中,定义如下:,/*-Real-Time Clock-*/typedef struct vu32 CR;vu32 CFGR;vu32 CIR;vu32 APB2RSTR;vu32 APB1RSTR;vu32 AHBENR;vu32 APB2ENR;vu32 APB1ENR;vu32 BDCR;vu32 CSR;RCC_TypeDef;,1、RCC复位和时钟配置寄存器组,/*Peripheral base address in the bit-band region*/#define PERIPH_BASE(u32)0 x40000000),/*Peripheral memory map*/#define APB1PERIPH_BASE PERIPH_BASE#define APB2PERIPH_BASE(PERIPH_BASE+0 x1 0000)#define AHBPERIPH_BASE(PERIPH_BASE+0 x2 0000),#define RCC_BASE(AHBPERIPH_BASE+0 x1000),#ifdef _RCC#define RCC(RCC_TypeDef*)RCC_BASE)#endif/*_RCC*/,该宏定义的功能:在程序中,所有写RCC的地方,编译器的预处理程序,都将它替换为:(RCC_TypeDef*)0 x40021000),2、枚举类型ErrorStatus,在文件“stm32f10 x_type.h”中,包含typedef enum ERROR=0,SUCCESS=!ERROR ErrorStatus;,该语句,定义了新枚举类型名ErrorStatus,代表左侧定义的枚举类型。,3、RCC_Configuration(复位和时钟设置)函数:在“HelloRobot.h”中,ErrorStatus HSEStartUpStatus;,void RCC_Configuration(void)/*将外设RCC寄存器组重新设置为默认值,即复位。RCC system reset*/RCC_DeInit();/*打开外部高速时钟晶振HSE,Enable HSE*/RCC_HSEConfig(RCC_HSE_ON);/*等待HSE外部高速时钟晶振稳定,或者在超时的情况下退出,Wait till HSE is ready*/HSEStartUpStatus=RCC_WaitForHSEStartUp();if(HSEStartUpStatus=SUCCESS)/SUCCESS:HSE晶振稳定就绪/*设置AHB时钟=SYSCLK=48 MHz,HCLK(即 AHB时钟)=SYSCLK*/RCC_HCLKConfig(RCC_SYSCLK_Div1);/*设置高速PCLK2时钟(即APB2 clock)=AHB时钟/2=24 MHz,PCLK2=HCLK/2*/RCC_PCLK2Config(RCC_HCLK_Div2);/*设置低速PCLK1时钟(即APB1 clock)=AHB时钟/4=12 MHz,PCLK1=HCLK/4*/RCC_PCLK1Config(RCC_HCLK_Div4);/RCC_HCLK_Div4:APB1 clock=HCLK/4=12MHz,此处不同于鸥鹏公司的程序(=36MHz)/*设置Flash 延时时钟周期数:为2*/FLASH_SetLatency(FLASH_Latency_2);/*Enable Flash Prefetch Buffer预取指令指令缓冲区,这2句与RCC没有关系*/FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);/*利用锁相环将HSE外部8MHz晶振6倍频到48 MHz。PLLCLK=8MHz*6=48 MHz*/RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_6);/此处不同于鸥鹏公司的程序:PLLCLK=8MHz*6=48 MHz/*Enable PLL*/RCC_PLLCmd(ENABLE);/*Wait till PLL is ready,等待 锁相环 输出稳定*/while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)=RESET)/*Select PLL as system clock source*/RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);/选择PLLCLK作为SYSCLK,所以SYSCLK为48 MHz/*Wait till PLL is used as system clock source*/while(RCC_GetSYSCLKSource()!=0 x08)/*Enable peripheral clocks-*/*GPIOA,GPIOB and SPI1 clock enable*/RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_SPI1,ENABLE);/*Enable GPIOC,GPIOD clock*/RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOD,ENABLE);,枚举类型,变量,/*设置低速PCLK1时钟(即APB1 clock)=AHB时钟/4=12 MHz,PCLK1=HCLK/4*/RCC_PCLK1Config(RCC_HCLK_Div4);/RCC_HCLK_Div4:APB1 clock=HCLK/4=12MHz,此处不同于鸥鹏公司的程序(=36MHz)/*设置Flash 延时时钟周期数:为2*/FLASH_SetLatency(FLASH_Latency_2);/*Enable Flash Prefetch Buffer预取指令指令缓冲区,这2句与RCC没有关系*/FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);/*利用锁相环将HSE外部8MHz晶振6倍频到48 MHz,作为PLLCLK。PLLCLK=8MHz*6=48 MHz*/RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_6);/此处不同于鸥鹏公司的程序:PLLCLK=8MHz*6=48 MHz/*Enable PLL*/RCC_PLLCmd(ENABLE);,/*Wait till PLL is ready,等待 锁相环 输出稳定*/while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)=RESET)/*Select PLL as system clock source*/选择PLLCLK作为SYSCLK,所以SYSCLK为48 MHz RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);/*Wait till PLL is used as system clock source*/while(RCC_GetSYSCLKSource()!=0 x08)/*Enable peripheral clocks-*/*GPIOA,GPIOB and SPI1 clock enable*/RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_SPI1,ENABLE);/*Enable GPIOC,GPIOD clock*/RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOD,ENABLE);,以上所见的固件库函数:详见“中文版:STM32F10 xxx_固件库函数 V2.pdf P193”,固件库函数的具体实现:见文件“stm32f10 x_rcc.h”,其中RCC_DeInit();,/*Function Name:RCC_DeInit*Description:Resets the RCC clock configuration to the default reset state.*Input:None*Output:None*Return:None*/void RCC_DeInit(void)/*Set HSION bit*/RCC-CR|=(u32)0 x00000001;/*Reset SW1:0,HPRE3:0,PPRE12:0,PPRE22:0,ADCPRE1:0 and MCO2:0 bits*/RCC-CFGR,2.3 STM32单片机I/O端口配置,2.3.1 STM32单片机的 I/O端口和管脚,2.3.2 STM32单片机的 I/O端口配置,2.3.1 STM32单片机的 I/O端口和管脚,STM32单片机 最多有7个16位的并行 I/O端口:PA、PB、PC、PD、PE、PF、PG。,STM32F103Cx单片机 只有4个16位的并行 I/O端口:PA、PB、PC、PD。,STM32F103CBT6 包含4个端口:PA口、PB口、PC口、PD口,共有37个I/O管脚:PA口 16脚+PB口16脚+PC口3脚+PD口2脚。,STM32单片机的I/O端口和管脚:以STM32F103Cx为例,每个GPIOx端口:共有7个设置寄存器两个32位的配置寄存器(GPIOx_CRL,GPIOx_CRH)(GPIOx_CRL)(x=A.G):GPIOx configuration register low,GPIOx端口低配置寄存器,用于配置GPIOx端口的第0位第7位。两个32位的数据寄存器(GPIOx_IDR,GPIOx_ODR)(GPIOx_IDR)(x=A.G):GPIOx input data register 一个32位的置位/复位寄存器(GPIOx_BSRR)(GPIOx_BSRR)(x=A.G):GPIOx bit set/reset register一个16位的复位寄存器(GPIOx_BRR)一个32位的锁定寄存器(GPIOx_LCKR)(GPIOx_LCKR)(x=A.G):GPIOx configuration lock register,在MCS-51单片机中,每个IO端口:只有1个设置寄存器P0端口:P0端口寄存器-P0,P1端口:P1端口寄存器-P1,P2端口:P2端口寄存器-P2,P3端口:P3端口寄存器-P3。对应STM32单片机的数据寄存器两个32位的数据寄存器(GPIOx_IDR,GPIOx_ODR)(GPIOx_IDR)(x=A.G):GPIOx input data register,MCS-51单片机I0端口的输入、输出数据寄存器共用1个寄存器Px,而STM32单片机的输入、输出数据寄存器是分开的。,MCS-51单片机的特殊功能寄存器,在固件函数库的“stm32f10 x_map.h”文件中,对应的定义:,/*-General Purpose IO-*/typedef struct vu32 CRL;/configuration register low(GPIOx_CRL)(x=AE)vu32 CRH;vu32 IDR;vu32 ODR;vu32 BSRR;vu32 BRR;vu32 LCKR;GPIO_TypeDef;/用结构体GPIO_TypeDef定义GPIOx端口,(即定义 GPIOx端口的7个设置寄存器),2.3.2 STM32单片机的 I/O端口配置,5、在使用GPIO端口时,首先要使能该外设对应的时钟,1、GPIOx 端口 定义,2、GPIO_Pin_x 管脚 定义,3、GPIO_InitTypeDef 初始化端口参数 定义,4、GPIO_Init 初始化端口 定义,6、GPIO编程 步骤,1、编程时,GPIOx端口的具体配置是从GPIOA、GPIOB、GPIOC、GPIOD、或 GPIOE寄存器组开始。首先,在固件库中,用结构体GPIO_TypeDef定义GPIOx端口,(即定义 GPIOx端口的7个设置寄存器):,在文件“stm32f10 x_map.h”中,定义如下:,/*-General Purpose IO-*/typedef struct vu32 CRL;/configuration register low32(GPIOx_CRL)(x=AE)vu32 CRH;vu32 IDR;vu32 ODR;vu32 BSRR;vu32 BRR;vu32 LCKR;GPIO_TypeDef;/用结构体GPIO_TypeDef定义 GPIOx端口/或称用结构体GPIO_TypeDef定义 GPIOx寄存器组,GPIOx端口的7个设置寄存器,端口配置低寄存器(GPIOx_CRL)(x=A.E):,表3.11:端口位配置表,表3.12:输出模式位,#define GPIOA_BASE(APB2PERIPH_BASE+0 x0800)#define GPIOB_BASE(APB2PERIPH_BASE+0 x0C00)#define GPIOC_BASE(APB2PERIPH_BASE+0 x1000)#define GPIOD_BASE(APB2PERIPH_BASE+0 x1400)#define GPIOE_BASE(APB2PERIPH_BASE+0 x1800)#define GPIOF_BASE(APB2PERIPH_BASE+0 x1C00)#define GPIOG_BASE(APB2PERIPH_BASE+0 x2000),GPIOA、GPIOB、GPIOC、GPIOD、或 GPIOE寄存器组 的首地址:,/*Peripheral base address in the bit-band region*/#define PERIPH_BASE(u32)0 x40000000),/*Peripheral memory map*/#define APB1PERIPH_BASE PERIPH_BASE#define APB2PERIPH_BASE(PERIPH_BASE+0 x10000)#define AHBPERIPH_BASE(PERIPH_BASE+0 x20000),0 x40011000,0 x40010800,0 x40010C00,0 x40011400,0 x40011800,0 x40011C00,0 x40012000,#ifdef _GPIOA#define GPIOA(GPIO_TypeDef*)GPIOA_BASE)#endif/*_GPIOA*/#ifdef _GPIOB#define GPIOB(GPIO_TypeDef*)GPIOB_BASE)#endif/*_GPIOB*/#ifdef _GPIOC#define GPIOC(GPIO_TypeDef*)GPIOC_BASE)#endif/*_GPIOC*/#ifdef _GPIOD#define GPIOD(GPIO_TypeDef*)GPIOD_BASE)#endif/*_GPIOD*/#ifdef _GPIOE#define GPIOE(GPIO_TypeDef*)GPIOE_BASE)#endif/*_GPIOE*/#ifdef _GPIOF#define GPIOF(GPIO_TypeDef*)GPIOF_BASE)#endif/*_GPIOF*/#ifdef _GPIOG#define GPIOG(GPIO_TypeDef*)GPIOG_BASE)#endif/*_GPIOG*/,在文件“stm32f10 x_gpio.h”中,定义,2、GPIO_Pin_x 管脚 定义:,/*Exported constants-*/*GPIO pins define-*/#define GPIO_Pin_0(u16)0 x0001)/*Pin 0 selected*/#define GPIO_Pin_1(u16)0 x0002)/*Pin 1 selected*/#define GPIO_Pin_2(u16)0 x0004)/*Pin 2 selected*/#define GPIO_Pin_3(u16)0 x0008)/*Pin 3 selected*/#define GPIO_Pin_4(u16)0 x0010)/*Pin 4 selected*/#define GPIO_Pin_5(u16)0 x0020)/*Pin 5 selected*/#define GPIO_Pin_6(u16)0 x0040)/*Pin 6 selected*/#define GPIO_Pin_7(u16)0 x0080)/*Pin 7 selected*/#define GPIO_Pin_8(u16)0 x0100)/*Pin 8 selected*/#define GPIO_Pin_9(u16)0 x0200)/*Pin 9 selected*/#define GPIO_Pin_10(u16)0 x0400)/*Pin 10 selected*/#define GPIO_Pin_11(u16)0 x0800)/*Pin 11 selected*/#define GPIO_Pin_12(u16)0 x1000)/*Pin 12 selected*/#define GPIO_Pin_13(u16)0 x2000)/*Pin 13 selected*/#define GPIO_Pin_14(u16)0 x4000)/*Pin 14 selected*/#define GPIO_Pin_15(u16)0 x8000)/*Pin 15 selected*/#define GPIO_Pin_All(u16)0 xFFFF)/*All pins selected*/,使用按位或运算符“|”可以一次选中多个管脚。可以使用上表中的任意组合。,3、GPIO_InitTypeDef 初始化端口参数 定义,(1)枚举类型GPIOSpeed_TypeDef:用于定义GPIO管脚 的 响应速度,(2)枚举类型GPIOMode_TypeDef:用于定义GPIO管脚 的 工作模式,(3)结构体GPIO_InitTypeDef:用于初始化端口参数,难点,在文件“stm32f10 x_gpio.h”中,定义:,typedef enum GPIO_Speed_10MHz=1,GPIO_Speed_2MHz,GPIO_Speed_50MHzGPIOSpeed_TypeDef;/定义GPIO管脚 的 响应速度,(1)枚举类型GPIOSpeed_TypeDef:用于定义GPIO管脚 的 响应速度,typedef enum GPIO_Mode_AIN=0 x0,GPIO_Mode_IN_FLOATING=0 x04,GPIO_Mode_IPD=0 x28,GPIO_Mode_IPU=0 x48,GPIO_Mode_Out_OD=0 x14,GPIO_Mode_Out_PP=0 x10,GPIO_Mode_AF_OD=0 x1C,GPIO_Mode_AF_PP=0 x18GPIOMode_TypeDef;/定义GPIO管脚 的 工作模式,(2)枚举类型GPIOMode_TypeDef:用于定义GPIO管脚 的 工作模式,STM32单片机的每一个输入/输出引脚(即GPIO端口的每一位)可以配置成以下8种模式(4输入+2输出+2复用输出):,STM32单片机的GPIO端口模式:,输入浮空:IN_FLOATING输入上拉:IPU(In Push-Up)输入下拉:IPD(In Push-Down)模拟输入:AIN(Analog In)开漏输出:Out_OD(Open Drain Output)推挽式输出:Out_PP(Push-Pull Output)推挽式复用功能:AF_PP(Push-Pull Output Alternate-Function)开漏复用功能:AF_OD(Open Drain Output Alternate-Function),输 入,输 出,复用输 出,/*Configuration Mode enumeration-*/typedef enum GPIO_Mode_AIN=0 x0,GPIO_Mode_IN_FLOATING=0 x04,GPIO_Mode_IPD=0 x28,GPIO_Mode_IPU=0 x48,GPIO_Mode_Out_OD=0 x14,GPIO_Mode_Out_PP=0 x10,GPIO_Mode_AF_OD=0 x1C,GPIO_Mode_AF_PP=0 x18GPIOMode_TypeDef;/定义GPIO管脚 的 工作模式,工作模式:用低4位 区分。,输 入,输 出,输入、输出:高4位为1-输出,否则为输入。,I/O端口位的基本结构,输入数据寄存器,输出数据寄存器,位置位/复位寄存器,I/O端口位的输入电路,I/O端口位的输出电路,I/O端口位的输入电路,I/O端口位的浮空/上拉/下拉输入电路,I/O端口位的高阻抗模拟 输入电路,图3.11:I/O端口位的输入浮空/上拉/下拉配置,激活施密特触发输入,输出缓冲器被禁止,根据输入配置(上拉,下拉或浮空)的不同,弱上拉和下拉电阻被连接,在每个APB2时钟周期,出现在I/O脚上的数据被采样到输入数据寄存器,-参见“!STM32F10 x_中文版_参考手册 V10_1(2010年1月10日).pdf”P108,图3.14:I/O端口位的高阻抗模拟输入配置,输出缓冲器被禁止,禁止施密特触发输入。,施密特触发输出值被强置为0,弱上拉和下拉电阻被禁止,读取输入数据寄存器时数值为0,I/O端口位的输出电路,I/O端口位的开漏输出电路,I/O端口位的推挽输出电路,I/O端口位的复用功能的推挽输出电路和开漏输出电路,图3.12 I/O端口位的开漏输出配置,开漏模式:P-MOS从不被激活,仅N-MOS工作。,开漏模式:输出寄存器上的0激活N-MOS,输出低电平;而输出寄存器上的1将端口置于高阻状态(P-MOS从不被激活)。,激活施密特触发输入,在每个APB2时钟周期,出现在I/O脚上的数据被采样到输入数据寄存器,图3.12 I/O端口位的推挽输出配置,推挽模式:输出寄存器上的0激活N-MOS,而输出寄存器上的1将激活P-MOS。,激活施密特触发输入,弱上拉和下拉电阻被禁止,在每个APB2时钟周期,出现在I/O脚上的数据被采样到输入数据寄存器,图3.13:I/O端口位的复用功能配置,激活施密特触发输入,弱上拉和下拉电阻被禁止,在每个APB2时钟周期,出现在I/O脚上的数据被采样到输入数据寄存器,复用功能Input,到片上外设,自片上外设,如果把端口配置成复用输出功能,则引脚和输出寄存器断开,并和片上外设的输出信号连接。,图3.13:I/O端口位的复用功能配置,仅有输出,才有复用功能。,复用功能Input,到片上外设,自片上外设,开漏输出、推挽输出 和 复用功能的开漏输出、推挽输出 不同之处:引脚和输出寄存器断开,并和片上外设的输出信号连接。增加了复用功能Input,/*GPIO Init structure definition*/typedef struct u16 GPIO_Pin;GPIOSpeed_TypeDef GPIO_Speed;GPIOMode_TypeDef GPIO_Mode;GPIO_InitTypeDef;/用于初始化GPIOx端口的参数(包括管脚号、管脚响应速度、管脚工作模式),(3)结构体GPIO_InitTypeDef:用于初始化端口参数,比较 结构体GPIO_TypeDef 和GPIO_InitTypeDef:,4、GPIO_Init 初始化端口 定义,功能:根据GPIO_InitTypeDef中指定的参数,初始化外设GPIOx端口,例如,GPIO_InitTypeDef GPIO_InitStructure;/定义结构体变量GPIO_InitStructure,用于初始化GPIOx端口的参数GPIO_Init(GPIOC,/初始化GPIOC端口,/*Function Name:GPIO_Init*Description:Initializes the GPIOx peripheral according to the specified*parameters in the GPIO_InitStruct.*Input:-GPIOx:where x can be(A.G)to select the GPIO peripheral.*-GPIO_InitStruct:pointer to a GPIO_InitTypeDef structure that*contains the configuration information for the specified GPIO*peripheral.*Output:None*Return:None*/void GPIO_Init(GPIO_TypeDef*GPIOx,GPIO_InitTypeDef*GPIO_InitStruct)u32 currentmode=0 x00,currentpin=0 x00,pinpos=0 x00,pos=0 x00;u32 tmpreg=0 x00,pinmask=0 x00;/*Check the parameters*/assert_param(IS_GPIO_ALL_PERIPH(GPIOx);assert_param(IS_GPIO_MODE(GPIO_InitStruct-GPIO_Mode);assert_param(IS_GPIO_PIN(GPIO_InitStruct-GPIO_Pin);/*-GPIO Mode Configuration-*/currentmode=(u32)GPIO_InitStruct-GPIO_Mode),2.4 STM32单片机I/O端编程步骤,GPIOx端口 编程步骤,第2章 STM32单片机IO端口编程,2.1 STM32单片机管脚和命名规则,2.2 STM32单片机时钟 配置,2.3 STM32单片机I/O端口配置,2.4 STM32单片机I/O端编程步骤,1、Cortex-M3芯片STM32F103ZEH7的含义?2、请写出使能USART1外设对应的时钟命令。3、简述你对GPIO管脚 的 工作模式的理解。4、编写程序,实现循环点亮连接在PA口的16个管脚上的发光二极管。电路详见下面。,作业:,

    注意事项

    本文(STM32单片机IO端口编程.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

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




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开