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

发布者:MysticalDreamer最新更新时间:2020-12-03 来源: eefocus关键字:STM32  AFIO时钟  配置问题 手机看文章 扫描二维码
随时随地手机看文章

最近在写程序时发现设置外部中断出了问题,之前的程序好好的怎么就不能用了呢?经过了一晚上的折腾发现问题出在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); 


关键字:STM32  AFIO时钟  配置问题 引用地址:STM32学习笔记——AFIO时钟的配置问题

上一篇:完美实现STM32单总线挂多个DS18B20
下一篇:STM32学习笔记——高级定时器TIM1更新中断配置

推荐阅读最新更新时间:2024-11-10 22:25

stm32 tft的使用
的驱动是9328的驱动ic 下面是该驱动ic的 驱动: void ili9320_Initializtion() { u16 i; LCD_X_Init(); Delay(5); /* delay 50 ms */ // LCD_WriteReg(0x0000,0x0001); Delay(5); /* delay 50 ms */ //start internal osc DeviceCode = LCD_ReadReg(0x0000); // DeviceCode = 0x9320; // DeviceCode = 0x9325; if(DeviceCode==0x9325||DeviceCode==0x9
[单片机]
STM32数据手册中那些重要内容
有许多初学的朋友,常在后台问一些关于数据手册中就有的知识,今天就在这里统一写出来了。 那部分朋友,你可能还不知道数据手册中有这些内容,今天分享出来,希望你们认真阅读一下数据手册。 1写在前面 我们编写STM32底层驱动代码的时候,会牵涉到一些与芯片引脚、电气特性相关的知识。这个时候,就需要查看芯片对应的官方手册。 一般《Reference manual参考手册》和《Datasheet数据手册》这两本手册是我们底层编程常用到。所以,推荐初学者一定要把这两本手册下载来对照学习。 当然,这里说的两本手册,是针对每一种型号STM32都应该具有的,但不同型号的STM32对应的手册可能不同,也有可能相同。 比如:
[单片机]
<font color='red'>STM32</font>数据手册中那些重要内容
STM32学习笔记之电容触摸2
(4)在led.c文件中添加以下代码 (5)在tpad.c文件内添加以下代码 #include tpad.h #include delay.h /*************************************************** Name :TPAD_Get_Value Function :触摸按键值获取 Paramater :None Return :获取的充电时间 ***************************************************/ u16 TPAD_Get_Value() { //电容放电 GPIOA- CRL &= 0xFFF
[单片机]
<font color='red'>STM32</font>学习笔记之电容触摸2
关于IAR 里面用JLINK烧写STM32程序的Target reset 错误
今天调程序调了一个通宵。错误的提示是这个, Fri Oct 21 07:18:35 2011: Target reset (没错,错误提示就是这么短,程序一烧进单片机里面,程序就跑飞了,一直没找到原因) 一直在找问题。 后来,通过一行一行地对照代码,发现几乎全部都是一样的。只是别人的程序是所有的设置都一股脑地放在一个函数里面。 而我把里面的设置分了类,然后分成几个函数,然后这几个函数再放进一个总的函数里面,这样程序比较有条理一点。 但是,这样居然就错误了。然后我也像别人一样把函数里面的东西都拿出来全部放进一个函数里面,然后就可以通过了。 我想可能是哪里有一点点不同吧,然后又认真看了很久,试了很久,还是没发现
[单片机]
关于IAR 里面用JLINK烧写<font color='red'>STM32</font>程序的Target reset 错误
STM32的USART中RTS、 CTS的作用和意义
写在前面 Ⅰ 我们都知道USART中RX和TX这两个引脚的功能,这两个引脚是USART串行通信最常见和必不可少的两个引脚。但我们在手册中会发现关于USART的其他引脚:USART_CK、USART_RTS、USART_CTS,如下图: 但我们大部分都没怎么使用过USART_RTS和USART_CTS这两个引脚。下面将给大家简单讲述一下关于USART串口拓展的知识。 关于DB9串口接头 Ⅱ 我们都听说过RS232,说232就知道DB9这个串口接头。 DB9个引脚的功能: 1 CD ← Carrier Detect 载波检测 2 RXD ← Receive Data 接收数据 3 TXD → Transmit Data 发送数
[单片机]
<font color='red'>STM32</font>的USART中RTS、 CTS的作用和意义
STM32的I2C通信
I2C总线是由NXP(原PHILIPS)公司设计,有十分简洁的物理层定义,其特性如下: 只要求两条总线线路:一条串行数据线SDA,一条串行时钟线SCL; 每个连接到总线的器件都可以通过唯一的地址和一直存在的简单的主机/从机关系软件设定地址,主机可以作为主机发送器或主机接收器; 它是一个真正的多主机总线,如果两个或更多主机同时初始化,数据传输可以通过冲突检测和仲裁防止数据被破坏; 串行的8 位双向数据传输位速率在标准模式下可达100kbit/s,快速模式下可达400kbit/s,高速模式下可达3.4Mbit/s; 连接到相同总线的IC 数量只受到总线的最大电容400pF 限制。 其典型的接口连线如下:
[单片机]
<font color='red'>STM32</font>的I2C通信
STM32开发 -- 信号强度CSQ
使用GSM模块的时候,需要查看信号强度。 使用查询信号AT指令: AT+CSQ +CSQ: 21,99 OK 这个AT指令使用都是了解的,但是+CSQ: 21,99,后面的数字代表什么意思呢? 怎么看是信号强弱还是没有信号呢? 接下来开始总结: 一、查看芯片手册 我查看的是 SIM7500_SIM7600 Series_AT Command Manual _V1.06 下载:SIM7600 技术文档 其他模块的可能有些许不一样。 芯片手册上有关于AT+CSQ的介绍: 描述 该命令用于从ME返回接收信号强度指示和信道误码率。 测试命令将TA支持的值作为复合值返回。 命令 信号强度指示 信道误
[单片机]
<font color='red'>STM32</font>开发 -- 信号强度CSQ
STM32之 IP ICMP ETHERNET的实现
1.前言 嵌入式以太网开发是一个很有挑战性的工作。通过几个月的学习,个人觉得大致有两条途径。第一条途径,通过高级语言熟悉socket编程,例如C#或C++,熟悉bind,listen,connect,accept等函数,在嵌入式系统中应用 lwIP协议栈。第二种途径,通过分析嵌入式以太网代码,结合TCPIP协议栈规范逐步实践协议栈代码。第一种途径效率高,开发周期短,编写出来的代码性能稳定,第二种途径花的时间长,开发出来的代码功能不完善,但是由于紧紧结合TCPIP规范,可以了解的内容较多,适合学习。本文通过分析和修改AVRNET源码并移植到STM32平台,逐步实现TCPIP协议栈的各个子部分,包括ETHERNET部分,ARP部分,I
[单片机]
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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