主要内容:
1.为什么STM32F0没有AFIO时钟呢?
2.关于STM32中的各种电源
3.IAR中如何查看外设寄存器
4.关于问问题
1为什么STM32F0没有AFIO时钟呢?
前面写过一篇文章【关于STM32时钟配置的那些坑】里面有讲述关于什么时候开启AFIO时钟,有朋友下来去研究AFIO时钟时发现STM32F0芯片中没有AFIO时钟,于是就问了这么一个问题:你好,为什么STM32F0没有AFIO时钟呢?
答案就是STM32F0没有AFIO时钟。那又是怎样实现重定义这个功能的呢?
实现重定义功能也是由特定的控制器完成的,需要使用某个控制器,就需要开启对应的时钟。
而STM32F1就是由“Alternate function I/O and debug configuration”完成的这个功能,所以开启的时钟就是AFIO时钟。
细心的朋友会发现除STM32F1外的MCU,像F0、F2、F3···L4,甚至最新的H7这些芯片里面都有这个一个控制器:系统配置控制器 (SYSCFG)。
这个SYSCFG控制器的功能因芯片不同,功能也不同。比如F4系统配置控制器主要用于管理对可执行代码的存储区域的地址重映射、选择以太网 PHY 接口以及管理 GPIO 的外部中断线连接。
像H7的功能就更多了:
很多人经常看见别人代码中开启AFIO时钟、SYSCFG时钟,但自己却不知道究竟什么时候开启,什么时候不开启。那么,只需要看一下手册就行了。
如果你不知道何时开启,使用STM32CubeMX配置生成初始化代码查看一下就知道啦。
2关于STM32中的各种电源
有朋友要求讲述一下关于STM32中ADC参考电压的问题,这里就简单就讲述一下关于STM32中各电源的情况。
STM32中电源有:VBAT、 VSS、 VDD、VSSA、 DDA、VCAP、 VREF+、 VREF-等。
关于电源,可以查看STM32参考手册【电源控制】的章节,看一下里面电源框图就一目了然了。拿STM32F4举例:
其实,主要划分为三块区域:备份区域(电池电源)、常规供电电源(VDD)、模拟部分电源(ADC、DAC等)。
一般参考电压VREF+或VREF-只有在大封装100及以上引脚才有。没有参考电压的芯片就是使用内部参考电压。
有一个条件,VREF+ 引脚电压:VSSA- < VREF+ < VDDA。
内部参考电压VREFINT
一般内部参考电压 VREFINT 连接到 ADC1_IN17,也就是说可以通过ADC读取内部参考电压。
3IAR中如何查看外设寄存器
前面一篇文章【IAR在线调试查看各种变量的不同方法】讲述了IAR View视图菜单中的几个子菜单,查看几个变量的窗口。
于是,后台就有朋友问了一个问题:IAR开发环境中定时器的寄存器状态在哪里查看。
因为很多朋友都是从Keil MDK-ARM过来的,知道MDK-ARM里面可以直接查看外设寄存器,而且可以快速的查看每一个Bit位。如下图:
那么,回到EWARM,很多朋友找了很久,就是没有找到类似上面Keil中那种快速查看的方法。
说实话,包括我也是从初学IAR到后面工作了,一直都没有找到类似上面可以快速查看外设寄存器的方法。那么,是不是就没有办法确定我们配置的外设寄存器的值了呢?
答案是:我们可以通过View视图菜单下Memory和Symbolic Memory子菜单锁定外设寄存器所在地址的值。
上图,是STM32F103中GPIOA的地址,当我们修改过寄存器的值,就会看见对应的值。此方法的缺点显而易见,必须知道外设寄存器的地址,而且查看非常费时。