STMCU小助手
发布时间:2023-6-14 12:01
|
1. 在特殊情况下使能 MCO 功能的方法 在对某些不容易复现的问题进行代码调时,需要观察内部时钟的情况,但往往代码之前并没有使能 MCO 功能,在这种情况下就可以使用寄存器直接配置来输出内部时钟到 GPIO 脚位上进行观察和测试。 下面的例子就是在调试 STM32G474 很难复现的一个问题,调试暂停时,通过 PC 端调试工具直接更改寄存器配置来使能 MCO 功能输出 SYSCLK 到 GPIO 口的方法。 / C5 Z% `3 }. B, f! s 2. 具体实现 ' A* Q0 N5 M' d+ [0 S/ [
3 \' U5 K1 O) o2 K 在调试软件中直接手动修改寄存器配置值,如下图:- I5 z6 P' n4 R$ _' E" X7 X) l ) m& d Z& H- \7 K: }: L. R+ S / t- t$ P4 o% k
; i9 @4 J/ }! z1 i; r 其次,需要配置 GPIO 通路:GPIO MCO 选用 PA8 , AF0 功能。 2 m! L9 ~6 e. _ ^) I( S+ y2 k
, V$ a( J" r* m( C GPIO 选择下面黄色的配置:在下面的配置之前代码中需要打开 GPIOA 的 clock。
GPIOA_MODER.MODE8[1:0] 在寄存器窗口中手动修改为 0x2: * c$ q0 {3 w5 U8 j, s ^/ K0 Q( M( `9 J: B* u$ O) I9 z+ A" B2 M
GPIOA_OTYPER.OT8 配置为 0,在上电默认的情况下,不用修改,已经是 0 了。
GPIOA_OSPEEDR.OSPEED8[1:0] 配置成 0x2 或 0x3。 4 Z6 g* z' l; x9 {' k* n; @; M8 T' L. {
GPIOA_PUPDR.PUPD8[1:0] 在寄存器窗口中手动配置为 0x1。 1 h2 d H u* O1 [" I
GPIOA_AFRH.AFSEL8[3:0] 配置为 0x0,上电默认已经为 0 了,不用修改,如果不 是,请手动修改为 0。 & f; p; B* J0 X0 k- F. j: ]0 H: o2 E
% S" C' H$ t' W- Q7 ~ U+ ?, N1 o1 J* X 手动修改后的 GPIOA 寄存器值为如下图 18 所示: ( K9 n$ F; j+ Y+ y: q n* `% x- G
3. 总结 在调试软件时,可以通过 PC 端调试工具直接修改寄存器配置来使能某些功能。不过,使用中须注意遵守一定的流程,比如先开启对应的外设 clock,然后才能配置具体的寄存器去实现一些相应的功能。 转载自: STM32单片机 如有侵权请联系删除9 @6 H, h2 w& f, a* f' Y " Y3 F* L; L- ?! h% @ |
【STM32H735G-DK 测评】STM32H735G-DK External Loder 编译和测试
Keil-MDK 在线调试设置断点的高级用法
请教下STM32N6570 怎么把分辨率改成320x240并可以全屏显示
【福利三:逢7发帖赢大礼】想要充分利用STM32H743VI片内的RAM空间(但并不顺利)
基于stm32平台上的IC-MU磁绝对值编码器SPI通讯和码盘数据处理
使用STM32 MCU和MPU连接PDM数字麦克风
分享STM32资料-采用 STM32U031R8 MCU 的 STM32 Nucleo-64 开发板,官方资料,数据手册等资料
HRTIM 指南
使用 STM32 的 DWT 单元监控内存
DAC,COMP,HRTIM Fault 功能的使用
微信公众号
手机版