STM32的AFIO时钟什么时候需要开启

发布者:HeavenlyWonder最新更新时间:2018-08-26 来源: eefocus关键字:STM32  AFIO时钟  开启 手机看文章 扫描二维码
随时随地手机看文章

  相比于普通单片机,STM32 拥有复杂的时钟系统,相应的控制器称为 RCC(Reset Clock Controller,复位与时钟控制器)。每个外设都配备了外设时钟的开关,当我们不使用某个外设时,可以把这个外设时钟关闭,从而降低 STM32 的整体功耗。因此,在我们使用外设前,必须要开启相应外设的时钟。可以使用的库函数有:


void RCC_AHBPeriphClockCmd(uint32_t RCC_AHBPeriph, FunctionalState NewState);


void RCC_APB1PeriphClockCmd(uint32_t RCC_APB1Periph, FunctionalState NewState);


void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState);


  显然,在开启外设时钟前,先要知道该外设挂载在哪个总线上。以 GPIOC 的 pin4 引脚为例:


RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);


  STM32 中的大部分 GPIO 都有复用功能,所以对于有复用功能的 I/O 引脚,还要开启其复用功能时钟。如 GPIO 的 pin4 可以用作 ADC1 的输入引脚,当我们把它作为 ADC1 使用时,需要开启 ADC1 的时钟:


RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);


  另外, STM32 的所有 GPIO 都引入到 EXTI 外部中断线上,使得所有的 GPIO 都能作为外部中断的输入源。所以如果把 GPIO 用作 EXTI 外部中断时,还需要开启 AFIO 时钟。


RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);


  那么,问题来了! 

  AFIO 是什么?AFIO 时钟什么时候需要开启? 

   

  我们从《STM32中文参考手册_V10》中找到:对寄存器 AFIO_EVCR、AFIO_MAPR 和 AFIO_EXTICRX 进行读写操作前,应当首先打开 AFIO 的时钟(设置 APB2 外设时钟使能寄存器 RCC_APB2ENR)。 

  也就是说:当你需要配置 AFIO 这些寄存器的时候,就需要把 RCC_APB2ENR 寄存器的 AFIO 位置‘1’打开 AFIO 时钟。 

   

  跟 AFIO 相关的寄存器有: 

  1、 事件控制寄存器(AFIO_EVCR) 

  2、 复用重映射和调试I/O 配置寄存器(AFIO_MAPR) 

  3、 外部中断配置寄存器1(AFIO_EXTICR1) 

  4、 外部中断配置寄存器2(AFIO_EXTICR2) 

  5、 外部中断配置寄存器3(AFIO_EXTICR3) 

  6、 外部中断配置寄存器4(AFIO_EXTICR4)


  看看这些寄存器的定义,我们就明白,这些寄存器是用于“事件控制”、“重映射”、“调试IO配置”、“外部中断”的。例如 AFIO_EXTICRX 用于选择 EXTIx 外部中断的输入源。 

  总结:当我们需要配置这些 AFIO 寄存器的时候,就需要打开 RCC_APB2ENR 寄存器的 AFIO 时钟,而不是用到引脚复用功能的时候打开。


关键字:STM32  AFIO时钟  开启 引用地址:STM32的AFIO时钟什么时候需要开启

上一篇:初学STM32对AFIO的简单理解
下一篇:STM32通过中断方式实现USART1通信

推荐阅读最新更新时间:2024-03-16 16:12

AITO问界M5四驱旗舰版正式开启预定
3月16日,在华为全屋智能及全场景新品发布会上,AITO问界M5四驱旗舰版于3月16日21:08正式开启预定,官方售价31.98万元,消费者可通过华为商城、AITO官网、华为体验店、AITO用户中心、AITO APP以及我的华为APP进行预定。 AITO问界M5四驱旗舰版作为顶配车型,新增专属车漆颜色——天青蓝,辨识度进一步提升。内饰方面,旗舰版独享高级晶钻档把,采用晶钻珠宝工艺50面极致切割,将豪华与质感体现淋漓尽致。配置方面,旗舰版标配主驾私享头枕音响及HUD抬头显示系统,在便利的同时也提升驾驶安全。此外,车辆配备了 20英寸空气动力学轮毂,搭配倍耐力P ZERO高性能静音轮胎,增加视觉冲击力同时优化车辆风阻系数。
[汽车电子]
AITO问界M5四驱旗舰版正式<font color='red'>开启</font>预定
stm32 按键控制实验
一旦用到按键,一个关键的问题就是消抖,如果对这个问题不管的话,会引起很多难以控制的问题,最常见的就是反复进入中断导致程序飞出。 目前我手里的这款32有四个按键,上PA0是高电,左下右PE234是低电 操作步骤: 持续胡扫描key.c #include system.h #define KEY_LEFT_Pin GPIO_Pin_2 //定义K_LEFT管脚 #define KEY_DOWN_Pin GPIO_Pin_3 //定义K_DOWN管脚 #define KEY_RIGHT_PinGPIO_Pin_4 //定义K_RIGHT管脚 #define KEY_UP_Pin GPIO_Pin_0 //定义K
[单片机]
STM32之RTC实时时钟
RTC实时时钟简介: STM32的RTC外设,实质是一个掉电后还继续运行的定时器,从定时器的角度来看,相对于通用定时器TIM外设,它的功能十分简单,只有计时功能(也可以触发中断).但是从掉电还能继续运行来看,它是STM32中唯一一个具有这个功能功能的外设.(RTC外设的复杂之处不在于它的定时,而在于它掉电还可以继续运行的特性) 所谓掉电,是指电源Vpp断开的情况下,为了RTC外设掉电可以继续运行,必须给STM32芯片通过VBAT引脚街上锂电池.当主电源VDD有效时,由VDD给RTC外设供电.当VDD掉电后,由VBAT给RTC外设供电.无论由什么电源供电,RTC中的数据始终都保存在属于RTC的备份域中,如果主电源和VBA都掉电,那么
[单片机]
基于STM32单片机利用ST库函数设置Systick
Systick是STM32中特有的系统时钟SysTIck有两个功能:1.可以产生精确延时;2.可以提供给系统一个单独的时钟节拍。一般延时程序: DELAY(N) { for( i=0 ; i《=x ; i++ ) ; } 对于STM32系列的微处理器中,执行一条指令只需要几十ns,进行for循环时,要实现N毫秒延时,那么x的意义非常大,而且由于系统频率的宽广,很难计算出延时N毫秒的精确值,那么在一些高速电路中,是不允许的,容易出现问题,很难查找出来。尤其在液晶驱动中,延时要求非常精确。针对STM32的处理器中,需要重新设计一个方法实现该功能,来代替DELAY(N)延时; cortex-m3中包含了一个SysTI
[单片机]
2017年LED显示屏行业将开启新一轮倒闭潮
LED显示屏行业发展至今,随着技术水平的成熟以及市场的开发,行业的的洗牌整合也随着行业的发展与完善在席卷着中小型LED屏企。然而即便如此,LED显示屏行业洗牌至今,据不完全统计,做LED显示屏的厂家仍然有2500多家,倒闭的企业有之,但是亦有新兴的企业兴起,期望分一杯羹,行业集中度有待进一步加强。下面就随嵌入式小编一起来了解一下相关内容吧。 但是,从今年以来,受到整个大的经济形势影响,由LED显示屏上游龙头企业发起的涨价给下游中小型企业施加压力的同时,LED显示屏下游龙头企业产品价格不升反降,无疑再次分割中小企LED屏企市场份额。加之外部的威胁,整个LED显示屏行业将加速洗牌整合。 一直以来,LED显示屏行业不仅仅是面对着内部恶
[嵌入式]
STM32移植Marlin固件
marlin入口函数为loop所以沿着loop函数一步一步分析 get_command(); //读取串口接收到的数据根据 n和*来读取到一个完整的命令并保存在combuffer中 process_commands() { -----code_seen('G') //查看当前命令中有没有G这个代码 -----get_coordinates() //获取命令中XYZF字符后面的值并保存在Destinatio 和feedrate变量 -----prepare_move() //根据get_coordinates()获得的值和之前设定好的一些变量来控制步进电机
[单片机]
STM32 IAP 应用编程几个要点
我们常看到ISP、ICP、IAP等缩写词组,它们的主要作用就是对程序代码进行更新(编程)。 下面将介绍关于编程的基础知识,以及结合STM32官方提供的Demo讲述一下关于编程的内容。 1关于ISP、ICP、IAP 1.ISP ISP:In System Programing,在系统编程。 比如:使用STC-ISP对STC芯片编程,利用Flash loader对STM32编程等。 支持ISP的芯片一般在芯片内部固化了一段(用ISP升级的)boot程序。 2.ICP In Circuit Programing,在电路编程。 ICSP:In-Circuit Serial Programming,在电路串行编程。如:对EEPROM编程
[单片机]
<font color='red'>STM32</font> IAP 应用编程几个要点
用FPGA搭建一个STM32内核?
1.必要的基础知识 为了更快的完成在FPGA上实现ARM Cortex-M3软核,一些必要的基础知识还是要有的! FPGA开发基础知识,如FPGA开发流程,设计、综合、布局、布线、约束、下载 Xilinx Vivado开发环境使用基础,如BlockDesign设计方式,管脚分配,Bit流文件生成与下载 ARM Cortex-M3内核的使用基础,如STM32、MM32、GD32、CH32等微控制器的开发。 Keil-MDK开发环境的使用基础,基本的工程建立、编译、下载流程。 如果以上知识都具备,那么,恭喜你!可以在2小时内完成ARM Cortex-M3软核在FPGA上的实现。 2.Cortex-M3 FPGA IP核下载 首先,
[单片机]
用FPGA搭建一个<font color='red'>STM32</font>内核?
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved