STM32学习笔记——AFIO时钟的配置问题

摘要:
经过一夜的挣扎,我发现问题出在AFIO时钟配置上。我没有启用AFIO时钟。请参阅手册:很明显,操作时需要启用三种类型的AFIO寄存器:1.事件控制寄存器2.重用重新映射和调试I/O配置寄存器3.外部中断配置寄存器x实际上是所有AFIO寄存器_ EVCR与事件相关,AFIO_ MAPR与重新映射和调整I/O相关。AFIO_ EXTICRx与外部中断有关。因此,在重新映射引脚和调试I/O配置、外部中断和事件时,需要启用AFIO。因此,在随后的外部中断配置代码中,无需AFIO操作即可实现该功能。

最近在写程序时发现设置外部中断出了问题,之前的程序好好的怎么就不能用了呢?经过了一晚上的折腾发现问题出在AFIO时钟的配置上,我没有使能AFIO时钟。


什么时候要开启AFIO呢?参考手册: 

STM32学习笔记——AFIO时钟的配置问题第1张
说的很明白,操作AFIO的三类寄存器时需要开启: 
1.事件控制寄存器(AFIO_EVCR)
2.复用重映射和调试I/O配置寄存器(AFIO_MAPR)
3.外部中断配置寄存器x(AFIO_EXTICRx)
这三类其实是AFIO的全部寄存器, AFIO_EVCR是事件相关的,AFIO_MAPR是与重映射和调试I/O相关的,AFIO_EXTICRx是与外部中断相关的。因此管脚重映射和调试I/O配置、外部中断、事件时需开启AFIO。

 

再回头来看之前的程序能用就能理解了,在之前的程序中,我的主函数初始化区有这样两行代码:

RCC->APB2ENR |= 0x00000001;  //禁用JTAG,开启SWD

AFIO->MAPR = (0x00FFFFFF & AFIO->MAPR)|0x02000000;   

这段代码配置了JTAG和SWD引脚,同时配置了AFIO时钟。所以在后面的外部中断配置代码中没有操作AFIO也能实现功能。最终我在程序中加了这句话,问题完美解决。RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);  

免责声明:文章转载自《STM32学习笔记——AFIO时钟的配置问题》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇vue下实现WebRTCSQL查询案例:寻找连续日期中残缺的数据下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

STM32 ADC转换时间

STM32F103XX的ADC的采样时钟最快14MHz,最快采样率为1MHz。 ADC时钟: 这个ADC时钟是从哪来的呢。我们看下面这个STM32的时钟结构图: 我们大多使用STM32的最快PCLK2系统时钟72MHz。 ADCCLK的时钟由72MHz的6分频能瞒住14MHz以下的要求 为12MHz。 RCC_ADCCLKConfig(RCC_PCLK2...

【STM32】MDK中寄存器地址名称映射分析

对于MCU,一切底层配置,最终都是在配置寄存器 51单片机访问地址 51单片机经常会引用一个reg51.h的头文件。下面看看它是怎么把名字和寄存器联系在一起的: 1 sfr p0=0x80; 2 p0=0x00; sfr是一种扩充数据类型,使用一个内存单位,值域为0-255.利用它可以访问51单片机内部所有的特殊功能寄存器。前一句“sfr p0=0x80”...

STM32 USB HID BarCodeReader不兼容问题的解决

STM32USB HID class的一部分 BarCodeScanner(条码枪)不兼容的解决 硬件构成 STM32F479-EVAL 评价板型号为FFTAA10AP条码枪 现象 最近用CubeMX生成的USB库做条形码枪的USB驱动,用的是HID协议。有的条形码枪,用标准的USB库一次就能成功。但是有的型号的条码枪貌似和标准USB库流程有所出入,执行后...

stm32基本定时器timer6的原理与使用

/********************基本定时器 TIM 参数定义,只限 TIM6、7************/ /* 一、定时器分类 STM32F1 系列中,除了互联型的产品,共有 8 个定时器,分为基本定时器,通用定时器和高级定时器。基本定时器 TIM6 和 TIM7 是一个 16 位的只能向上计数的定时器,只能定时,没有外部 IO。通用定...

STM32 串口采用DMA方式收发

FROM:https://blog.csdn.net/gdjason/article/details/51019219 什么是DMA —- Directional Memory Access, 直接存储器存取用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。无须CPU干预,数据可以通过DMA快速地移动,这就节省了CPU的资源来做其他操作 我...

STM32 无法通过 %f 打印浮点数

一、问题 使用 IAR 开发 STM32,发现无法通过 printf 重定向到串口打印出浮点数。代码如下: 输出结果如下: 可见,浮点数部分无法正常显示。 二、解决方法 这是由于 IAR 默认选择的 printf 库不支持浮点数的的输出。可在设置选项中修改。如下:默认使用 small,改为 auto 即可。 三、备注 在不修改设置的情况下,尝试过如...