历史上的今天
今天是:2024年12月03日(星期二)
2020年12月03日 | STM32学习笔记——AFIO时钟的配置问题
2020-12-03 来源:eefocus
最近在写程序时发现设置外部中断出了问题,之前的程序好好的怎么就不能用了呢?经过了一晚上的折腾发现问题出在AFIO时钟的配置上,我没有使能AFIO时钟。
什么时候要开启AFIO呢?参考手册:

说的很明白,操作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);
史海拾趣
|
现场总线是一种开放式、 数字化、多点通信的控制系统局域网络, 是当今自动化领域中最具有应用前景的技术之一。CAN总线是现场总线中的应用热点,CAN总线支持分布式控制和适时控制的串行通信网络。 由于CAN总线具有通信速率高、开放性好、报文短 ...… 查看全部问答> |
|
最近要在原来的板子上添加3G模块,用的是中兴的MC8630,但该模块的AT指令是通过串口来发送接收的,而相关的数据信息是通过USB来进行的 如此一来,我们是这样设想的:在原来的板子上模拟一个虚拟串口来接收上层的AT指令,然后该虚拟串口再把接收到的指令 ...… 查看全部问答> |
|
DIY导航避障车小组今日下午展开第一次例会,在本次例会中大家集中讨论了无线的选择,避障的选择等等部分,并对小车进行了前景规划,以谷歌的自动驾驶车为终极目标,大家积极发言例会持续了一个半小时,并表示未来会采用各种新技术。下次再来把细节 ...… 查看全部问答> |
|
一个额定量程为10吨的称重传感器,激励电压为10V,灵敏度为1.0+-0.005mV/V,零点平衡+-1%F.S,综合误差为+-0.02%F.S 那么在货物重量为5吨时,误差应该是:5TX0.02%=0.001t=1千克吧。。 那么按网上一些知识的理解,当货物为10吨的时候,在10V的激 ...… 查看全部问答> |
|
这个有的网友调通过,我调了不通,有看官问了,你笔记发了不少,网络程序也编成功并跑通了。怎么SD卡例程还调不通。真地假地? 我SD卡调通过但不是例程。我现在说的是开发板上的TI原装例 ...… 查看全部问答> |




