keil uVision使用仿真模拟器

       利用keil uVision工具开发时,没有实际开发板时,有些代码可以利用keil uVision提供的仿真模拟器对代码进行调试。使用仿真模拟器步骤如下:

1、打开目标选项(Options for target...)界面,方法点击工具栏上的魔法棒(或者在Project窗口在项目的目标(target)右键,选中 Options for target 菜单项),操作如下图所示:

       打开目标选项界面如下图所示:

2、选择正确的芯片型号,在创建工程时,如果选择了合适芯片型号,则本步骤可以省略。方法:点击"Device"选项切换到设备选项界面,在search框中输入芯片类型,在下面的树形设备列表中选择要模拟的设备类型。如下图所示:

3、获取芯片仿真使用的数据。

        点击菜单"File->Device Database...",如下图所示:

        点击后进入如下图所示界面:

        在Search框中输入芯片型号(即第2步中选择的设备型号),在设备列表中选择芯片型号后,在最下面的框中找到“SIM=XXXXXX”这一行,将数据拷贝到一个临时文件中保存。

4、使用仿真调试功能,再次打开“目标选项”界面中,选择“Debug”选项切换到调试选项设置界面,选中“Use Simulator”选项,并将第3步获取的dll名称和参数修改选项目,如下图所示:

5、启动调试,点击工具栏放大镜图标(或按ctrl+F5键),启动调试即可用仿真器调试代码了。如下图所示:

6、时钟设置

       在默认情况下,仿真器的sysclk使用的是内部8M时钟, 如果要使用外部时钟,需要进行设置。在 keil uVision v5.25版本以后,仿真器sysclk频率不能在“目标选项”界面修改时,即Xtal选项是恢的,如下图所示:

        网上有的解决方法都是去修改system_stm32f10x.c中的时钟定义相关的参数,其实不需要,只需要在启动调试后,将时钟相关寄存器值设置正确就可以,按前文操作到第5步时,按以下操作方法设置即可:

       点击菜单“ Peripherals->Power,Reset and Clock Control”(注意一定要进入仿真调试时,Peripherals菜单才会有子菜单),如下图所示:

       将打开时钟和重置寄存器设置界面,如下图所示:

       要使用外部时钟,如SMT32F103ZE可以按下图所示修改,将使用外部时钟,SYSCLK最大频率为72MHZ。注意PLLON选项要最后点击,因为选中了PLLON选项,PLL将生效,其他一些选项将无法修改。

       设置完成后,直接点右上角的叉关闭窗口就可以。时钟寄存器设置请看芯片手册中的时钟树和寄存器的相关资料,在这里不再细说。

7、查看时钟频率

       设置完时钟寄存器后,有什么好方法知道仿真器的时钟频率是否设置正确呢?可以利用watch窗口查看 SYSCLK 值,点击菜单“View->Watch Windows->Watch 1”,如下图所示:

         将打开watch窗口,如下图所示:

        双击窗口中的“<Enter expression>”进入编辑状态后,输入SYSCLK将VALUE列中显示其设置的频率值,如下图所示:

        上图中value显示的是16进制,可以在变量名上右键取消16进制显示,如下图所示:

      取消勾选项后,按10进制显示,可以看到sysclk使用的是内存时钟8M,如下图所示:

按第6步设置完成后,利用debug的步进工具进入main函数后,可以看到时钟时变为了72MHZ,如下图所示。

### 如何在Keil5中设置和运行STM32G431芯片仿真 要在Keil MDK 5环境中成功完成STM32G431芯片的仿真,需按照以下方法操作: #### 安装必要的支持包 为了确保开发环境能够识别并支持STM32G431芯片,必须先安装对应的设备家族包(Device Family Pack)。对于STM32G4系列芯片,推荐使用官方提供的`Keil.STM32G4xx_DFP.x.y.z.pack`文件[^2]。该文件包含了针对STM32G4系列的所有必要驱动和支持。 此外,如果目标是更广泛的STM32G0系列,则可考虑安装`Keil.STM32G0xx-DFP.1.4.0.pack`文件[^1],尽管它主要适用于STM32G0系列,但在某些情况下也可能提供兼容性帮助。 #### 创建新工程 打开Keil µVision IDE后,创建一个新的工程项目。在弹出的选择窗口中输入具体的器件型号——这里应选择`STM32G431RB`或其他适合的具体变体。这一步骤至关重要,因为只有选择了正确的器件才能加载相应的启动代码、寄存器定义以及中断向量表。 #### 配置调试工具链 进入项目的选项菜单 (`Project -> Options for Target`) ,切换到 `Debug` 标签页。在此处指定使用的硬件调试接口,例如ST-LINK/V2 或其他兼容JTAG/SWD 的调试探针。同时确认已勾选启用半主机模式 (Enable Semihosting),这对于程序运行期间的数据交换非常有用。 关于软件仿真部分,虽然理论上可以直接利用内部模型实现纯软仿真实验,但由于缺乏实际外设交互反馈机制,效果有限;因此建议尽可能连接真实的硬件平台来获得最佳体验。 #### 编写测试代码 下面给出一段简单的LED闪烁示例代码作为入门演示: ```c #include "stm32g4xx_hal.h" void SystemClock_Config(void); int main(void){ HAL_Init(); SystemClock_Config(); __HAL_RCC_GPIOA_CLK_ENABLE(); // Enable clock access to GPIO port A GPIO_InitTypeDef LED_Pin; LED_Pin.Pin = GPIO_PIN_5; // PA5 as output pin LED_Pin.Mode = GPIO_MODE_OUTPUT_PP; LED_Pin.Pull = GPIO_NOPULL; LED_Pin.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOA, &LED_Pin); while(1){ HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_5); HAL_Delay(500); } } ``` 以上代码片段展示了如何初始化一个基本的GPIO端口,并让其周期性翻转状态以点亮/熄灭外部接线至PA5管脚上的LED灯泡。 #### 运行与验证 编译上述源码之后下载至目标板卡或者直接开始在线调试会话即可观察预期行为表现情况。注意检查是否有任何错误提示信息显示出来以便及时调整参数设定直至完全正常运作为止。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值