书签 分享 收藏 举报 版权申诉 / 53
上传文档赚钱

类型时钟与设计(共53张)课件.pptx

  • 上传人(卖家):晟晟文业
  • 文档编号:4143139
  • 上传时间:2022-11-14
  • 格式:PPTX
  • 页数:53
  • 大小:1.22MB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《时钟与设计(共53张)课件.pptx》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    时钟 设计 53 课件
    资源描述:

    1、第章时钟与设计第第8章章 STM32时钟与时钟与GPIO设计设计F8.1 8.1 时钟设置与开启外设时钟时钟设置与开启外设时钟 F8.2 GPIO8.2 GPIO简介简介F8.3 GPIO8.3 GPIO端口配置存放器端口配置存放器F8.4 stm32f10 x.h8.4 stm32f10 x.h库中库中GPIOGPIO代码剖析代码剖析F8.6 GPIO8.6 GPIO控制控制LEDLED灯实验灯实验8.1 系统时钟配置与外设时钟开启F在在startup_stm32f10 x_hd.sstartup_stm32f10 x_hd.s启动文件中,调用启动文件中,调用_main_main函数之前函数

    2、之前先调用了先调用了SystemInit()SystemInit()初始化函数,其中系统时钟初始化函数,其中系统时钟SYSCLKSYSCLK设置:设置:时钟源、倍频、分频等控制参数。时钟源、倍频、分频等控制参数。FSystemInit()SystemInit()定义在定义在system_stm32f10 x.csystem_stm32f10 x.c文件中,其他的配文件中,其他的配置主要在置主要在stm32f10 x_rcc.cstm32f10 x_rcc.c中。中。F使用外设时,配置初始化后,必须也要开启外设时钟。使用外设时,配置初始化后,必须也要开启外设时钟。时钟设置解析F系统时钟系统时钟S

    3、YSCLKSYSCLK是是SystemInit()SystemInit()先将配置时钟相关的存放器都复先将配置时钟相关的存放器都复位为默认值,再调用位为默认值,再调用SetSysClock()SetSysClock()选择使用频率,而具体设置是选择使用频率,而具体设置是通过宏定义设置的。通过宏定义设置的。F函数调用顺序:函数调用顺序:启动文件启动文件 SystemInit()SystemInit()SetSysClockSetSysClock()()SetSysClockTo72()SetSysClockTo72()。1、SystemInit()FSTM32STM32时钟系统的时钟系统的Sys

    4、temInit()SystemInit()中设置:中设置:FSYSCLKSYSCLK系统时钟系统时钟=72MHz=72MHzFAHBAHB总线时钟总线时钟(使用使用SYSCLK)=72MHzSYSCLK)=72MHzFAPB1APB1总线时钟总线时钟(PCLK1)=36MHz(PCLK1)=36MHzFAPB2APB2总线时钟总线时钟(PCLK2)=72MHz(PCLK2)=72MHzFPLLPLL时钟时钟=72MHz=72MHzF用到的用到的RCCRCC存放器复位值:存放器复位值:FRCC_CR =0 x0000 xx83;RCC_CR =0 x0000 xx83;FRCC_CFGR =0

    5、x0000 0000RCC_CFGR =0 x0000 0000;FRCC_CIR =0 x0000 0000;RCC_CIR =0 x0000 0000;FRCC_CFGR2=0 x0000 0000;RCC_CFGR2=0 x0000 0000;F F这些这些RCCRCC时钟存放器组名的宏定义与其他外设存放器名定义都在时钟存放器组名的宏定义与其他外设存放器名定义都在stm32f10 x.hstm32f10 x.h文件中。文件中。RCC时钟存放器组在stm32f10 x.h中的定义typedef structtypedef struct _IO uint32_t CR;_IO uint32_

    6、t CR;_IO uint32_t CFGR;_IO uint32_t CFGR;_IO uint32_t CIR;_IO uint32_t CIR;_IO uint32_t APB2RSTR;_IO uint32_t APB2RSTR;_IO uint32_t APB1RSTR;_IO uint32_t APB1RSTR;_IO uint32_t AHBENR;_IO uint32_t AHBENR;_IO uint32_t APB2ENR;_IO uint32_t APB2ENR;_IO uint32_t APB1ENR;_IO uint32_t APB1ENR;_IO uint32_t

    7、BDCR;_IO uint32_t BDCR;_IO uint32_t CSR;_IO uint32_t CSR;#ifdef STM32F10X_CL#ifdef STM32F10X_CL _IO uint32_t AHBRSTR;_IO uint32_t AHBRSTR;_IO uint32_t CFGR2;_IO uint32_t CFGR2;#endif/#endif/*STM32F10X_CL STM32F10X_CL*/#if defined#if defined(STM32F10X_LD_VL)|defined(STM32F10X_MD_VL)|defined(STM32F10X

    8、_HD_VL)(STM32F10X_LD_VL)|defined(STM32F10X_MD_VL)|defined(STM32F10X_HD_VL)uint32_t RESERVED0;uint32_t RESERVED0;_IO uint32_t CFGR2;_IO uint32_t CFGR2;#endif/#endif/*STM32F10X_LD_VL|STM32F10X_MD_VL|STM32F10X_HD_VL STM32F10X_LD_VL|STM32F10X_MD_VL|STM32F10X_HD_VL*/RCC_TypeDef;RCC_TypeDef;F_IO _IO 宏定义宏定

    9、义core_cm3.hcore_cm3.h中:中:F#define#define_IO_IOvolatilevolatile;Fvolatile,volatile,易变的易变的,用变量时需到原地用变量时需到原地址重新存取。址重新存取。F uint32_t uint32_t定义在定义在stdin.hstdin.h里。里。F typedef unsigned int uint32_t;typedef unsigned int uint32_t;F知道了结构体首地址就确定知道了结构体首地址就确定RCCRCC存放器存放器组所有组所有3232位存放器的地址,位存放器的地址,0 x040 x04正好正好是

    10、地址偏移量,所以把连续的存放器是地址偏移量,所以把连续的存放器组定义为结构。组定义为结构。2、SetSysClock()函数如下此函数中选择调用确定使用频率的函数。此函数中选择调用确定使用频率的函数。Fstatic void SetSysClock(void)static void SetSysClock(void)#ifdef SYSCLK_FREQ_HSE#ifdef SYSCLK_FREQ_HSE SetSysClockToHSE();SetSysClockToHSE();#elif defined SYSCLK_FREQ_24MHz#elif defined SYSCLK_FREQ_2

    11、4MHz SetSysClockTo24();SetSysClockTo24();#elif defined SYSCLK_FREQ_36MHz#elif defined SYSCLK_FREQ_36MHz SetSysClockTo36();SetSysClockTo36();#elif defined SYSCLK_FREQ_48MHz#elif defined SYSCLK_FREQ_48MHz SetSysClockTo48();SetSysClockTo48();#elif defined SYSCLK_FREQ_56MHz#elif defined SYSCLK_FREQ_56MH

    12、z SetSysClockTo56();SetSysClockTo56();#elif defined SYSCLK_FREQ_72MHz/#elif defined SYSCLK_FREQ_72MHz/使用此项使用此项 SetSysClockTo72();SetSysClockTo72();#endif#endif3、SetSysClockTo72()函数函数F各个各个SetSysClockToXX(void)SetSysClockToXX(void)函数,配置了具体的系统时钟函数,配置了具体的系统时钟,PLL,PLL倍频倍频以及分频系数。采用存放器直接配置方式,如:以及分频系数。采用存放器

    13、直接配置方式,如:Fstatic void SetSysClockTo72(void)static void SetSysClockTo72(void)F _IO uint32_t StartUpCounter=0,HSEStatus=0;_IO uint32_t StartUpCounter=0,HSEStatus=0;F /*SYSCLK,HCLK,PCLK2 and PCLK1 configuration SYSCLK,HCLK,PCLK2 and PCLK1 configuration*/F /*Enable HSE Enable HSE*/F RCC-CR|=(uint32_t)RC

    14、C_CR_HSEON);RCC-CR|=(uint32_t)RCC_CR_HSEON);F do doF F HSEStatus=RCC-CR&RCC_CR_HSERDY;HSEStatus=RCC-CR&RCC_CR_HSERDY;F StartUpCounter+;StartUpCounter+;F while(HSEStatus=0)&(StartUpCounter!=while(HSEStatus=0)&(StartUpCounter!=HSE_STARTUP_TIMEOUT);HSE_STARTUP_TIMEOUT);F F欲深入分析时钟配置,就仔细阅读这些最底层的库函数!欲深入分析

    15、时钟配置,就仔细阅读这些最底层的库函数!开启关闭外设时钟F外设都是挂在外设都是挂在AHBAHB、APB1APB1、APB2APB2总线上,要想使用某个外设,必总线上,要想使用某个外设,必须初始化外设后,再开启使用开启外设的时钟,不用时再关闭外设须初始化外设后,再开启使用开启外设的时钟,不用时再关闭外设时钟时钟,从而降低从而降低STM32STM32的整体功耗。的整体功耗。Fstm32f10 x_rcc.cstm32f10 x_rcc.c文件中有开启和关闭外设时钟的库函数,文件中有开启和关闭外设时钟的库函数,如下:如下:FRCC_AHBPeriphClockCmdRCC_AHBPeriphCloc

    16、kCmd(外设名,外设名,ENABLEENABLE|DISABLEDISABLE)挂在挂在AHBAHB总线外设的开启与关闭函数,总线外设的开启与关闭函数,ENABLEENABLE开启,开启,DISABLEDISABLE关闭外设时钟;关闭外设时钟;FRCC_APB1PeriphClockCmdRCC_APB1PeriphClockCmd(外设名,外设名,ENABLEENABLE|DISABLEDISABLE)挂在挂在APB1APB1总线外设的开启与关闭函数;总线外设的开启与关闭函数;FRCC_APB2PeriphClockCmdRCC_APB2PeriphClockCmd(外设名,外设名,ENA

    17、BLEENABLE|DISABLEDISABLE)挂在挂在APB2APB2总线外设的开启与关闭函数;总线外设的开启与关闭函数;挂载在AHB的外设名Fstm32f10 x_rcc.hstm32f10 x_rcc.h中对外设名进行了宏定义中对外设名进行了宏定义,看名即知设备。看名即知设备。F#define RCC_AHBPeriph_DMA1 (uint32_t)0 x00000001)#define RCC_AHBPeriph_DMA1 (uint32_t)0 x00000001)F#define RCC_AHBPeriph_DMA2 (uint32_t)0 x00000002)#define

    18、RCC_AHBPeriph_DMA2 (uint32_t)0 x00000002)F#define RCC_AHBPeriph_SRAM (uint32_t)0 x00000004)#define RCC_AHBPeriph_SRAM (uint32_t)0 x00000004)F#define RCC_AHBPeriph_FLITF (uint32_t)0 x00000010)#define RCC_AHBPeriph_FLITF (uint32_t)0 x00000010)F#define RCC_AHBPeriph_CRC (uint32_t)0 x00000040)#define RC

    19、C_AHBPeriph_CRC (uint32_t)0 x00000040)F#define RCC_AHBPeriph_FSMC (uint32_t)0 x00000100)#define RCC_AHBPeriph_FSMC (uint32_t)0 x00000100)F#define RCC_AHBPeriph_SDIO (uint32_t)0 x00000400)#define RCC_AHBPeriph_SDIO (uint32_t)0 x00000400)F#define RCC_AHBPeriph_OTG_FS (uint32_t)0 x00001000)#define RCC_

    20、AHBPeriph_OTG_FS (uint32_t)0 x00001000)F#define RCC_AHBPeriph_ETH_MAC (uint32_t)0 x00004000)#define RCC_AHBPeriph_ETH_MAC (uint32_t)0 x00004000)F#define RCC_AHBPeriph_ETH_MAC_Tx (uint32_t)0 x00008000)#define RCC_AHBPeriph_ETH_MAC_Tx (uint32_t)0 x00008000)F#define RCC_AHBPeriph_ETH_MAC_Rx (uint32_t)0

    21、 x00010000)#define RCC_AHBPeriph_ETH_MAC_Rx (uint32_t)0 x00010000)挂载在APB2上的外设名F#define RCC_APB2Periph_AFIO (uint32_t)0 x00000001)#define RCC_APB2Periph_AFIO (uint32_t)0 x00000001)F#define RCC_APB2Periph_GPIO#define RCC_APB2Periph_GPIOA A (uint32_t)0 x00000004)(uint32_t)0 x00000004)F#define RCC_APB2P

    22、eriph_GPIO#define RCC_APB2Periph_GPIOB B (uint32_t)0 x00000008)(uint32_t)0 x00000008)F F#define RCC_APB2Periph_GPIO#define RCC_APB2Periph_GPIOG G (uint32_t)0 x00000100)(uint32_t)0 x00000100)F#define RCC_APB2Periph_ADC1 (uint32_t)0 x00000200)#define RCC_APB2Periph_ADC1 (uint32_t)0 x00000200)F#define

    23、RCC_APB2Periph_ADC2 (uint32_t)0 x00000400)#define RCC_APB2Periph_ADC2 (uint32_t)0 x00000400)F#define RCC_APB2Periph_TIM1 (uint32_t)0 x00000800)#define RCC_APB2Periph_TIM1 (uint32_t)0 x00000800)F#define RCC_APB2Periph_SPI1 (uint32_t)0 x00001000)#define RCC_APB2Periph_SPI1 (uint32_t)0 x00001000)F#defi

    24、ne RCC_APB2Periph_TIM8 (uint32_t)0 x00002000)#define RCC_APB2Periph_TIM8 (uint32_t)0 x00002000)F#define RCC_APB2Periph_USART1 (uint32_t)0 x00004000)#define RCC_APB2Periph_USART1 (uint32_t)0 x00004000)F#define RCC_APB2Periph_ADC3 (uint32_t)0 x00008000)#define RCC_APB2Periph_ADC3 (uint32_t)0 x00008000

    25、)F#define RCC_APB2Periph_TIM15 (uint32_t)0 x00010000)#define RCC_APB2Periph_TIM15 (uint32_t)0 x00010000)F#define RCC_APB2Periph_TIM16 (uint32_t)0 x00020000)#define RCC_APB2Periph_TIM16 (uint32_t)0 x00020000)F#define RCC_APB2Periph_TIM17 (uint32_t)0 x00040000)#define RCC_APB2Periph_TIM17 (uint32_t)0

    26、x00040000)F#define RCC_APB2Periph_TIM9 (uint32_t)0 x00080000)#define RCC_APB2Periph_TIM9 (uint32_t)0 x00080000)F#define RCC_APB2Periph_TIM10 (uint32_t)0 x00100000)#define RCC_APB2Periph_TIM10 (uint32_t)0 x00100000)F#define RCC_APB2Periph_TIM11 (uint32_t)0 x00200000)#define RCC_APB2Periph_TIM11 (uint

    27、32_t)0 x00200000)挂载在APB1上的外设名F#define RCC_APB1Periph_TIM#define RCC_APB1Periph_TIM2 2 (uint32_t)0 x00000001)(uint32_t)0 x00000001)F#define RCC_APB1Periph_TIM#define RCC_APB1Periph_TIM3 3 (uint32_t)0 x00000002)(uint32_t)0 x00000002)F F#define RCC_APB1Periph_TIM#define RCC_APB1Periph_TIM14 14 (uint32_

    28、t)0 x00000100)(uint32_t)0 x00000100)F#define RCC_APB1Periph_WWDG (uint32_t)0 x00000800)#define RCC_APB1Periph_WWDG (uint32_t)0 x00000800)F#define RCC_APB1Periph_SPI2 (uint32_t)0 x00004000)#define RCC_APB1Periph_SPI2 (uint32_t)0 x00004000)F#define RCC_APB1Periph_SPI3 (uint32_t)0 x00008000)#define RCC

    29、_APB1Periph_SPI3 (uint32_t)0 x00008000)F#define RCC_APB1Periph_USART2 (uint32_t)0 x00020000)#define RCC_APB1Periph_USART2 (uint32_t)0 x00020000)F#define RCC_APB1Periph_USART3 (uint32_t)0 x00040000)#define RCC_APB1Periph_USART3 (uint32_t)0 x00040000)F#define RCC_APB1Periph_UART4 (uint32_t)0 x00080000

    30、)#define RCC_APB1Periph_UART4 (uint32_t)0 x00080000)F#define RCC_APB1Periph_UART5 (uint32_t)0 x00100000)#define RCC_APB1Periph_UART5 (uint32_t)0 x00100000)F#define RCC_APB1Periph_I2C1 (uint32_t)0 x00200000)#define RCC_APB1Periph_I2C1 (uint32_t)0 x00200000)F#define RCC_APB1Periph_I2C2 (uint32_t)0 x00

    31、400000)#define RCC_APB1Periph_I2C2 (uint32_t)0 x00400000)F#define RCC_APB1Periph_USB (uint32_t)0 x00800000)#define RCC_APB1Periph_USB (uint32_t)0 x00800000)F#define RCC_APB1Periph_CAN1 (uint32_t)0 x02000000)#define RCC_APB1Periph_CAN1 (uint32_t)0 x02000000)F#define RCC_APB1Periph_CAN2 (uint32_t)0 x0

    32、4000000)#define RCC_APB1Periph_CAN2 (uint32_t)0 x04000000)F#define RCC_APB1Periph_BKP (uint32_t)0 x08000000)#define RCC_APB1Periph_BKP (uint32_t)0 x08000000)F#define RCC_APB1Periph_PWR (uint32_t)0 x10000000)#define RCC_APB1Periph_PWR (uint32_t)0 x10000000)F#define RCC_APB1Periph_DAC (uint32_t)0 x200

    33、00000)#define RCC_APB1Periph_DAC (uint32_t)0 x20000000)F#define RCC_APB1Periph_CEC (uint32_t)0 x40000000)#define RCC_APB1Periph_CEC (uint32_t)0 x40000000)开启外设时钟举例:FGPIOGPIO的的C C口挂在口挂在APB2APB2总线,所用的时钟总线,所用的时钟PCLK2PCLK2为为72MHz72MHz。开启。开启GPIOCGPIOC外设时钟:外设时钟:F RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC

    34、,ENABLE)RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE)F如用到如用到I/OI/O引脚复用功能,还要开启其复用功能时钟。如引脚复用功能,还要开启其复用功能时钟。如GPIOCGPIOC的的Pin4Pin4还可作为还可作为ADC1ADC1的输入引脚,把它作为的输入引脚,把它作为ADC1ADC1来用,除开启来用,除开启GPIOCGPIOC时钟,还要开启时钟,还要开启ADC1ADC1时钟:时钟:F RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE)RCC_APB2PeriphClockCm

    35、d(RCC_APB2Periph_GPIOC,ENABLE)F RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE)RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE)F开启关闭外设时钟的三个函数,内部对外设时钟的使能存放器开启关闭外设时钟的三个函数,内部对外设时钟的使能存放器操作,到达开启和关闭的目的。操作,到达开启和关闭的目的。8.2 GPIO简介FGPIOGeneralPurposeI/O通用型输入通用型输入/输出,主要用于需输出,主要用于需要用到数字量输入要用到数字量输入/输出的场合。输出的

    36、场合。F如:如:F继电器、继电器、LED、蜂鸣器等的控制;、蜂鸣器等的控制;F传感器状态、上下电平等信息的输入等。传感器状态、上下电平等信息的输入等。F管脚可承受最大管脚可承受最大5V的输入电压,电流为的输入电压,电流为4mA,短时间极限值,短时间极限值40mA;F。GPIO简介FGPIOGPIO引脚又被分为引脚又被分为GPIOAGPIOA、GPIOBGPIOGGPIOBGPIOG不同的组,每组端不同的组,每组端口分为口分为015015,共,共1616个引脚,不同芯片的端口组数不同。个引脚,不同芯片的端口组数不同。GPIOGPIO结构图:结构图:端口配置存放器GPIO简介FI/OI/O引脚可通

    37、过端口配置存放器设置成不同的功能。引脚可通过端口配置存放器设置成不同的功能。F四种输入模式图上半局部:四种输入模式图上半局部:F上拉输入与下拉输入:与上拉输入与下拉输入:与VDDVDD相连的为上拉电阻,与相连的为上拉电阻,与VSSVSS相连的为相连的为下拉电阻。再经施密特触发器就把信号转化为下拉电阻。再经施密特触发器就把信号转化为0 0、1 1存储在输入数存储在输入数据存放器。据存放器。F浮空输入:不接上拉与下拉电阻,直接由触发器输入,由于浮空输入:不接上拉与下拉电阻,直接由触发器输入,由于其输入阻抗较大,一般把这种模式用于标准的通讯协议如其输入阻抗较大,一般把这种模式用于标准的通讯协议如I2

    38、CI2C、USARTUSART的接收端。的接收端。F模拟输入:把电压信号直接传送到片上外设模块,如模拟输入:把电压信号直接传送到片上外设模块,如ADCADCGPIO简介F推挽输出模式:输出推挽输出模式:输出1 1时时P-MOSP-MOS导通输出高电平导通输出高电平1 1,0 0时时N-MOSN-MOS管导管导通输出低电平通输出低电平0 0。F开漏输出模式:开漏输出模式:只有只有N-MOSN-MOS管管,外部需接上拉电阻,输出,外部需接上拉电阻,输出0 0时导时导通,为低电平通,为低电平0 0;输出;输出1 1时截止,为高阻状态。时截止,为高阻状态。F复用功能的推挽式输出模式。复用功能的推挽式输

    39、出模式。F复用功能的开漏输出模式。复用功能的开漏输出模式。一只三极管放大信号正半周,另一只放大负半周,故称推挽放大器四种输出模式(图下半局部):GPIO简介 STM32P0.xP2.xF GPIOGPIO都可配置为中断功能,并可设置为上升沿、下降沿或都可配置为中断功能,并可设置为上升沿、下降沿或边沿触发。边沿触发。上升沿中断下降沿中断 边沿中断 GPIO中断还具有掉电唤醒功能8.3 GPIO端口配置存放器F1 1、端口配置低存放器、端口配置低存放器GPIOx_CRL(GPIOx_CRL(配置配置0707引脚引脚)Fx=AGx=AG,芯片的,芯片的GPIOGPIO端口。端口。FPIOx_CRLP

    40、IOx_CRL地址偏移量:地址偏移量:0 x00h0 x00h,复位值:,复位值:0 x4444 44440 x4444 4444F第第y y个引脚的模式由存放器的个引脚的模式由存放器的4 4个位控制,个位控制,MODEy1:0MODEy1:0引脚模式位引脚模式位,CNFy1:0CNFy1:0引脚配置位。可配置为引脚配置位。可配置为4 4种输入、种输入、4 4种输出模式。种输出模式。RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE)DLL Parameter:-pSTM32F103VE#define RCC_APB1Periph_CEC (u

    41、int32_t)0 x40000000)4、端口输出数据存放器GPIOx_ODR1、GPIO_InitTypeDef结构,引脚初始化的结构#define RCC_AHBPeriph_ETH_MAC_Rx (uint32_t)0 x00010000)G),读该存放器可看某个IO口的输入状态。如GPIOC的Pin4还可作为ADC1的输入引脚,把它作为ADC1来用,除开启GPIOC时钟,还要开启ADC1时钟:#define GPIOC_BASE(APB2PERIPH_BASE+0 x1000)4 stm32f10 x.LED实验中用到了RCC跟GPIO这两个外设。_IO uint32_t BSRR;

    42、GPIO_Mode_AF_PP=0 x18 /复用功能推挽输出答:那么把x端口第15个引脚的模式配置成了:输出的最大速度为50MHz的 通用推挽输出模式。欲深入分析时钟配置,就仔细阅读这些最底层的库函数!#define RCC_APB1Periph_BKP (uint32_t)0 x08000000)IDRy15:0(y=015)每个位对应I/O口的输入状态。GPIO端口配置存放器FCNFy1:0CNFy1:0:端口:端口y y配置位配置位F输入模式输入模式(MODE1:0=00)(MODE1:0=00):F0000:模拟输入:模拟输入F0101:浮空输入:浮空输入(复位默认值复位默认值)F1

    43、010:上拉:上拉/下拉输入下拉输入F1111:保存:保存F输出模式输出模式(MODE1:000)(MODE1:000):F0000:通用推挽输出:通用推挽输出F0101:通用开漏输出:通用开漏输出F1010:复用功能推挽输出:复用功能推挽输出F1111:复用功能开漏输出:复用功能开漏输出FMODEy1:0MODEy1:0:端口:端口y y模式位模式位F输入模式输入模式 0000:复位默认值:复位默认值F输出模式输出模式 0101:最大速度:最大速度10MHz10MHz 1010:最大速度:最大速度2MHz2MHz 1111:最大速度:最大速度50MHz50MHzPIOx_CRL复位值4444

    44、 4444h,即CNFy1:001、MODEy1:000,复位后端口配置为什么口?2、端口配置高存放器GPIOx_CRHFGPIOx_CRH(GPIOx_CRH(配置配置815815引脚引脚)与端口配置低存放器类似。与端口配置低存放器类似。F地址偏移量:地址偏移量:0 x04h0 x04h,复位值:,复位值:0 x4444 44440 x4444 4444F例例1 1:GPIOx_CRHGPIOx_CRH存放器的第存放器的第2828至至2929位设置为位设置为1111,并在第,并在第3030至至3131位设置为位设置为0000:F 答:那么把答:那么把x x端口第端口第1515个引脚的模式配置

    45、成了:输出的最大速度个引脚的模式配置成了:输出的最大速度为为50MHz50MHz的的 通用推挽输出模式。通用推挽输出模式。F例例2 2:上题反过来。:上题反过来。3、端口输入数据存放器GPIOx_IDRF端口输入数据存放器端口输入数据存放器(GPIOx_IDR)(x=A.G)(GPIOx_IDR)(x=A.G),读该存放器可,读该存放器可看某个看某个IOIO口的输入状态。口的输入状态。F地址偏移量:地址偏移量:0 x08h0 x08h,复位值:,复位值:0 x0000 XXXX0 x0000 XXXXF高位高位31:1631:16保存,始终读为保存,始终读为0 0。FIDRy15:0(y=01

    46、5)IDRy15:0(y=015)每个位对应每个位对应I/OI/O口的输入状态。口的输入状态。FGPIOx_IDRGPIOx_IDR为只读并只能以字的形式读出。为只读并只能以字的形式读出。4、端口输出数据存放器GPIOx_ODRFGPIOx_ODR(x=A.E)GPIOx_ODR(x=A.E)位。写该存放器可控制某个位。写该存放器可控制某个IOIO口的输出电口的输出电平,读该存放器可以判断平,读该存放器可以判断IOIO口的输出状态。口的输出状态。F地址偏移量:地址偏移量:0 x0Ch0 x0Ch,复位值:,复位值:0 x0000 00000 x0000 0000F高位高位31:1631:16保

    47、存,始终为保存,始终为0 0。FODRy15:0ODRy15:0:端口输出数据:端口输出数据(y=015)(y=015)F这些位可读可写并只能以字的形式操作。这些位可读可写并只能以字的形式操作。F通过通过GPIOx_BSRR(x=AG)GPIOx_BSRR(x=AG),可以分别地对各个,可以分别地对各个ODRODR位进行独位进行独立的置位立的置位/清零。清零。5、端口位置位/清零存放器GPIOx_BSRRFGPIOx_BSRR(x=A.G)GPIOx_BSRR(x=A.G),对,对GPIOxGPIOx的端口置位的端口置位/清零。清零。F地址偏移量:地址偏移量:0 x100 x10,复位值:,复

    48、位值:0 x0000 00000 x0000 0000F位位31:1631:16为为BRy(y=015)BRy(y=015),清零,只能以字写入:,清零,只能以字写入:0 0:对应的:对应的ODRxODRx位不产生影响;位不产生影响;1 1:对应的:对应的ODRxODRx位清零;位清零;F位位15:015:0为为BSy(y=015)BSy(y=015),置位,只能以字写入:,置位,只能以字写入:0 0:对对应的:对对应的ODRxODRx位不产生影响;位不产生影响;1 1:对应的:对应的ODRxODRx位置位;位置位;F注:如果同时设置注:如果同时设置BSyBSy和和BRyBRy的对应位,的对应

    49、位,BSxBSx位起作用。位起作用。6、端口位清零存放器(GPIOx_BRR)FGPIOx_BRR(x=A.G)GPIOx_BRR(x=A.G)对对GPIOxGPIOx的端口清零。的端口清零。F注意:相当于注意:相当于GPIOx_BSRRGPIOx_BSRR存放器的清零功能。存放器的清零功能。F地址偏移量:地址偏移量:0 x140 x14,复位值:,复位值:0 x0000 00000 x0000 0000FBits 31:16 ReservedBits 31:16 ReservedF位位15:015:0为为BRy(y=015):BRy(y=015):只能以字写入:只能以字写入:0 0:对应的:

    50、对应的ODRxODRx位不产生影响;位不产生影响;1 1:对应的:对应的ODRxODRx位清零;位清零;7、端口配置锁定存放器GPIOx_LCKRF端口配置锁定存放器端口配置锁定存放器(GPIOx_LCKR)(x=A.G)(GPIOx_LCKR)(x=A.G)F地址偏移量:地址偏移量:0 x180 x18,复位值:,复位值:0 x0000 00000 x0000 0000F位位16(LCKK)16(LCKK):当执行正确的写序入列写:当执行正确的写序入列写1-1-写写0-0-写写1-1-写写0-0-写写1 1,置,置1 1下次系统复位前该存放器被锁住。下次系统复位前该存放器被锁住。F位位15:

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:时钟与设计(共53张)课件.pptx
    链接地址:https://www.163wenku.com/p-4143139.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库