很多人在问,RCC_APB2ENR中的AFIO位什么时候需要开启?
有的人说用到外部中断的时候打开,有的人说引脚重映射的时候打开,等等。这些答案都是片面的,而且总感觉模糊不清。甚至,有些人错误的以为,是不是用到引脚复用功能的时候就打开呢?
不用着急,瑞生今天给大家讲个明白。
请看一下STM32的目录,如下图所示,找到AFIO。
我们点击目录前面的“+”号,打开AFIO的寄存器,如下图所示:
好了,答案出来了:当你需要配置AFIO这些寄存器的时候,就需要把RCC_APB2ENR寄存器的AFIO位置1打开AFIO时钟。
看看这些寄存器的定义,你就明白了,这些寄存器用来“事件控制”“重映射”“调试IO配置”“外部中断”。
总结:当你需要配置这些AFIO寄存器的时候,就需要打开RCC_APB2ENR寄存器的AFIO时钟。并不是用到引脚复用功能的时候打开!
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
关键字:STM32 APB2 AFIO时钟
引用地址:
STM32 APB2 AFIO时钟什么时候需要开启
推荐阅读最新更新时间:2024-03-16 15:24
STM32 CAN通信 滤波器配置总结
首先声明stm32手册写的太蛋疼,让我看了好长时间没看懂,后来根据实践再回头看了,才看懂一些,在这里还要感激网友发表的博客,下面内容为转载: 一、在STM32互联型产品中,CAN1和CAN2分享28个过滤器组,其它STM32F103xx系列产品中有14个过滤器组,用以对接收到的帧进行过滤。 每组过滤器包括了2个可配置的32位寄存器:CAN_FxR0和CAN_FxR1。这些过滤器相当于关卡,每当收到一条报文时,CAN要先将收到的报文从这些过滤器上 过 一下,能通过的报文是有效报文,收进相关联FIFO(FIFO1或FIFO2),不能通过的是无效报文(不是发给 我 的报文),直接丢弃。 (标准CAN的标志长度是11位。扩展格式C
[单片机]
做单片机设计,STM32 GPIO外部中断你必须知道
一、STM32中断分组: STM32 的每一个GPIO都能配置成一个外部中断触发源,这点也是 STM32 的强大之处。STM32 通过根据引脚的序号不同将众多中断触发源分成不同的组,比如:PA0,PB0,PC0,PD0,PE0,PF0,PG0为第一组,那么依此类推,我们能得出一共有16 组,STM32 规定,每一组中同时只能有一个中断触发源工作,那么,最多工作的也就是16个外部中断。STM32F103 的中断控制器支持 19 个外部中断/事件请求。每个中断设有状态位,每个中断/事件都有独立的触发和屏蔽设置。STM32F103 的19 个外部中断为: 线 0~15:对应外部 IO 口的输入中断。 线 16:连接到 PVD 输出。
[单片机]
手机红外遥控器发送红外信号到STM32【HAL库】
现在大部分手机上都有红外遥控功能,而且好像大部分信号STM32都是可以收到的。现在就使用STM32发送红外信号,由STM32上的红外接收器接收后执行不同的操作。以下是注意事项: 在标准库中有 EXTI_ClearITPendingBit(EXTI_Line15); 清除中断位,使用HAL库不用使用清除中断位 在HAL库中NVIC的设置在文件stm32f1xx_hal_cortex.c中 HAL_Delay并不能实现us的延时效果,要自己写 void delay_us(uint32_t i) { uint32_t temp; SysTick- LOA
[单片机]
STM32中assert_param的分析(转)
我们在学STM32的时候函数assert_param出现的几率非常大,上网搜索一下,网上一般解释断言机制,做为程序开发调试阶段时使用。下面我就谈一下我对这些应用的看法,学习东西抱着知其然也要知其所以然。 断言机制函数assert_param 我们在分析库函数的时候,几乎每一个函数的原型有这个函数assert_param();下面以assert_param(IS_GPIO_ALL_PERIPH(GPIOx));为例说一下我的理解,函数的参数IS_GPIO_ALL_PERIPH(GPIOx),我们可以寻找到原型 #defineIS_GPIO_ALL_PERIPH(PERIPH) (((*(uint32_t*)&(PERIP
[单片机]
基于STM32指纹识别模块(TFS-M64)的学习
之前的同学想用指纹模块做个东西,便让我帮他看看。收到之后了解了一下,最终是通过串口做通信的。这款产品是深圳十指科技的指纹模块,不过两年前就已经停产了。现在的新版的模块通信方式是完全一样的(串口通信),通信协议的变动也很少,不管是新模块还是老模块操作方式还是兼容的。 开始的时候用STM32的板子和它通信,忽略了响应时间的问题导致串口一直没有收到响应消息,后面找到这个原因之后便可完整的通过串口通信操作指纹模块了,为了方便后续使用封装了一份操作函数库: 头文件: #ifndef __TFS_M64_H #define __TFS_M64_H #include stm32f10x.h #define TRUE 1 #d
[单片机]
STM32的SPI采用DMA方式传输测试
环境: 主机:WIN7 开发环境:MDK4.23 MCU:STM32F103CBT6 说明: 参考链接: http://www.openedv.com/posts/list/3159.htm SPI传输数据分为连续传输和非连续传输. 连续传输时序图: 非连续传输时序图: 非连续传输模式可以参考上篇文章: http://blog.csdn.net/jdh99/article/details/7598573 官方pdf关于连续和非连续传输的说明: 当在主模式下发送数据时,如果软件足够快,能够在检测到每次TXE的上升沿(或TXE中断),并立即在正在进行的传输结束之前写入SPI_DR寄存器,则能够实现连续的通信;此时,
[单片机]
基于Cortex-M3的STM32微控制器处理先进电机控制方法
变频器的问世和先进的 电机控制 方法让 三相无刷电机 (交流感应电机或永磁同步电机)曾经在调速应用领域取得巨大成功。这些高性能的电机驱动器过去主要用于工厂自动化系统和机器人。十年来,电子元器件的大幅降价使得这些电机驱动器能够进入对成本敏感的市场,例如:家电、空调或个人医疗设备。本文将探讨基于ARM的标准微控制器如何在一个被DSP和FPGA长期垄断的市场上打破复杂的控制模式,我们将以意法半导体的基于Cortex-M3内核的STM32系列微控制器为例论述这个过程。 首先,我们回顾一下电机控制的基本原理。在电机控制系统内,为什么处理器非常重要?我们为什么需要非常好的计算性能?毕竟,Nicolas Tesla在一个世纪前发明
[安防电子]