dmBot Techical Forum

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 1589|回复: 1

STM32G431在线DEBUG时ADC12_COMMON无法修改的原因及解决方法

[复制链接]

5

主题

8

帖子

324

积分

版主

Rank: 7Rank: 7Rank: 7

积分
324
发表于 2020-4-5 17:44:32 | 显示全部楼层 |阅读模式
本帖最后由 liughsy 于 2020-4-5 22:06 编辑

STM32G431在线调试时遇到ADC12_COMMON寄存器写不进去的情况,如下图:
2.1.jpg
查阅手册后,可以发现,STM32G431包括两个ADCADC1/2,可以用于双ADC模式,共同的寄存器ADC12_COMMON的偏移地址应为0x50000300,而0x50000200是保留或者是ADC5的首地址:
2.2.jpg
问题找到,解决办法是要修改这个地址。
这是由svdSystem Viewer File)文件定义的,安装器件包后,会生成这个文件,默认路径为C:\Keil_v5\ARM\PACK\Keil\STM32G4xx_DFP\1.1.0\CMSIS\SVD
2.3.jpg
notepad打开或文本打开,搜索0x50000200后可以发现,这里的寄存器地址果真被写成了错误的数据,需要修改成0x50000300
2.4.jpg
修改完成后,仿真依然未修改,这是由于sfr,sfd文件未修改,可以参考链接[1]该文档生成sfd和sfr文件,也可以使用附件修改好的文件替换原文件即可,下面简要说明下操作步骤,下次遇到相同的问题,或者需要自定义仿真内容时,可按照此法进行修改。
1.      在C盘新建文件夹,命名为temp,将C:\Keil_v5\UV4文件夹里的SfrCC2.exe和SVDConv.exe以及刚才SVD文件夹里的STM32G431xx.svd文件复制到这个文件夹里。
2.4+.jpg
2.      打开命令提示符窗口(快捷键win+r),可选择将SVDConv文件拖到命令提示符窗口,也可以手动输入命令,如下图:
2.5.jpg
3.      输入SVDConvert命令,(命令格式可参考链接[5]),如下图:
2.6.jpg
4.      回车后,会发现,提示了一个错误,COMP_C4CSR的寄存器未对齐,这里暴露了该SVD文件的另一个问题,查阅手册后,会发现,COMP_C4CSR的寄存器偏移地址为0x0C,因此需要修改。
2.7.jpg
2.8.jpg
2.9.jpg

5.      修改完成后,再次启动命令,回车,能够正常输出文件,文件默认目录在C:\Users\[用户名],在此文件夹内,可以找到刚生成的STM32G431xx.h。
6.      如法炮制,可相应的生成.sfd和.sfr文件,只需把—generate=header换成sfd和sfr即可,将生成的sfd和sfr以及刚才修改过的.svd文件替换掉原先的文件,文件属性改为只读(可以不修改,无影响,只是防止修改),再次启动仿真,可以发现,寄存器的值可以被修改了,并且能实时地刷新数据。
2.10.jpg
参考链接:

STM32G431xx_SVD.zip

642.15 KB, 下载次数: 557

回复

使用道具 举报

67

主题

148

帖子

4万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
42664
发表于 2020-4-5 19:49:41 | 显示全部楼层
手动点赞
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|dmBot Inc. ( 粤ICP备19140833号-1 )

GMT+8, 2024-5-21 02:21 , Processed in 0.022698 second(s), 24 queries .

Powered by dmBot!

© 2001-2029 dmBot Inc.

快速回复 返回顶部 返回列表