利用Keil进行STM32F103RB芯片软件仿真模拟方法

您所在的位置:网站首页 stm32有仿真软件吗 利用Keil进行STM32F103RB芯片软件仿真模拟方法

利用Keil进行STM32F103RB芯片软件仿真模拟方法

2024-03-09 03:25| 来源: 网络整理| 查看: 265

目录

1. 利用cubemx建立STM32F103芯片工程........................................................................ 2

(1) MCU管脚配置................................................................................................ 2

(2) 系统时钟配置................................................................................................. 2

(3) 生成代码........................................................................................................ 2

2. 修改KEIL程序代码....................................................................................................... 3

(1) 修改main.cd代码........................................................................................... 3

(2) 编译程序代码................................................................................................. 4

3. 配置STM32F013RB虚拟仿真参数................................................................................. 4

(1) 调用设置窗口................................................................................................. 4

(2) 配置仿真参数................................................................................................. 5

4. GPIO输出--管脚监控..................................................................................................... 5

(1) 启动调试状态................................................................................................. 5

(2) 启动逻辑分析仪.............................................................................................. 5

(3) 配置监控GPIO管脚......................................................................................... 6

(4) 启动GPIO监控................................................................................................ 6

5. GPIO通用输入--管脚模拟与监控.................................................................................... 7

(1)逻辑仪器配置................................................................................................... 7

(2)配置模拟输入................................................................................................... 7

(3) 修改程序验证输入与输出的配合..................................................................... 7

6. GPIO输入外部中断---仿真模拟...................................................................................... 9

(1) 配置PC13为外部中断模式.............................................................................. 9

(2) 编写中断服务................................................................................................. 9

(3)配置仿真参数,开启仿真................................................................................ 10

7. 定时器模拟仿真......................................................................................................... 10

(1) 在cubeMX中配置定时器。........................................................................... 10

(2) 在main.c中启动定时器................................................................................. 11

(3) 添加定时器中断服务程序。........................................................................... 12

(4) 启动仿真....................................................................................................... 12

8. 串口功能仿真............................................................................................................. 12

(1) 安装虚拟串口工具......................................................................................... 12

(2) 安装串口调试工具......................................................................................... 13

(3) 检查STM32F103的串口配置.......................................................................... 13

(4) 修改main主程序.......................................................................................... 13

(5) MCU串口与虚拟绑定.................................................................................... 14

(6) 仿真开始....................................................................................................... 15

9. 不能用于AD/DA的软件模拟仿真................................................................................ 15

 

1.   利用cubemx建立STM32F103芯片工程(1)MCU管脚配置

在cubemx中可以直接建立STMF103RB NUCLEO开发板的默认工程,这个工程中已经配置好一个按钮和led小灯。其中按钮PC13,LED灯为PA5管脚。用默认配置就可以了。

图 1 STMF103RB NUCLEO

(2)系统时钟配置

由于软件仿真MCU没有外部硬件,因此把时钟配置内部时钟。

图 2 系统时钟配置

(3)生成代码

需要把当前的配置存储为工程,按下图建立工程名字和项目存储的位置,注意,这里的工程和文件夹名字尽量不要使用中文,中文有时导致莫名的问题。最后点击4的生成代码工具。工程编译为keil代码项目,最后点击“open project”打开keil下的工程。

图 3 项目保存及生成

图 4打开工程

 

2.   修改KEIL程序代码(1)修改main.cd代码

如下图所示,找到项目中的main.c程序,然后在while(1)循环中添加小灯翻转的代码

图 5 修改主程序

(2)编译程序代码

修改完代码后,保存工程。然后点击左上的编译按钮,在下面出现报错信息,如果error为0说明程序就没有问题,如果与warning需要分析一下,看看是否需要必须解决。

图 6 编译keil项目

3.   配置STM32F013RB虚拟仿真参数(1)调用设置窗口

在工程的文件夹名字上点击右键,在右键菜单中选择Option选项

图 7 调出配置窗口

 

(2)配置仿真参数

在弹出的option菜单中,选择debug菜单,按下图所示,选择2处为使用仿真模式。在3和4处填写你要仿真的芯片,参数如下:

① dialog dll 要改成DARMSTM.DLL,

② parameter需要改成  -pSTM32F103RB      (这个参数是根据不同的芯片改写的)

图 8 STM32F103RB芯片仿真参数配置

4.   GPIO输出--管脚监控(1)启动调试状态

点击debug菜单下的start debug。。。命令,启动系统进入调试状态。

图 9进入debug调试状态

(2)启动逻辑分析仪

在debug调试状态下,才可以看到逻辑分析仪的配置命令。按下图所示的步骤操作。

图 10 启动逻辑分析仪命令

 

(3)配置监控GPIO管脚

点击逻辑分析仪的“setup”命令,启动配置窗口,点击窗口中右上的新建按钮,在下面输入PORTA.5,表示监控A端口的5号管脚,就是PA5.

如下图所示,配置display为bit方式,颜色可以自定义,最后选择hex16进制模式。

 

 

 

(4)启动GPIO监控

如下图所示,点击左上角的RUN按钮,代码就可以正常运行了,在右侧的逻辑分析一种就可以看到PA5端口的输出状态。绿色的线是PC13输入按钮的管脚。

图 12 GPIO管脚逻辑仪监测

5.   GPIO通用输入--管脚模拟与监控(1)逻辑仪器配置

逻辑仪按4.3的方法配置PC13管脚进行监控

(2)配置模拟输入

如下图所示,调用peripherals菜单下的General I/O下的GPIOC窗口,点击窗口最下面的pin对应的右侧的管脚号,例如PC13,就会看到上面的逻辑分析的变化,说明进行了模拟输出。     

(3)修改程序验证输入与输出的配合

① 在cubmx中修改pc13的功能为外部输入,如下图所示,修改两个两个地方

图 14 在管脚图中修改PC13为input

图 15配置PC13管脚input参数

② 修改main程序功能,在while中循环检查pc13状态,如果输入为高电平,在PA5输出为低电平,如果PC13为底电平,则PA5输出高电平。在while循环中输入如下代码。

注意:每次在cubemx中重新生成keil工程需要重新配置仿真参数,切记。

 

                  int x1=HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_13);

                  if(x1==1)

                          HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_RESET);

                  else if(x1==0)

                          HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_SET);

6.   GPIO输入外部中断---仿真模拟(1)配置PC13为外部中断模式

如下图18所示,配置PC13为外部中断输入,中断采样方式为上升沿。

如图19所示,开启EXTI外部中断响应,配置优先级为4。

   

 

(2)编写中断服务

① 清除while循环中的无用数据。

② 在main程序开启PC13对应的软中断。如下图所示

图 20 开启中断

③ 添加独立的中断响应程序,如图20所示。注意放的位置是main.C的文件中 user code之间。

 

图 21 在main.C文件中添加中断服务程序

(3)配置仿真参数,开启仿真

每次在cubemx中重新生成keil工程需要重新配置仿真参数,切记。

图 22 外部中断仿真

7.   定时器模拟仿真(1)在cubeMX中配置定时器。

思路:

① 首先检查系统的时钟,确定定时器的主频时钟。

② 开启定时内部时钟,配置计时参数。

③ 开启定时器中断

④ 生成keil代码

(2)在main.c中启动定时器

在main.C中开启定时器中断服务。

图 26 开启定时器4

(3)添加定时器中断服务程序。

 

图 27添加定时中断服务程序

(4)启动仿真

按前面配置就可以了,利用逻辑仪查看在定时器服务程序中控制的输出端口PA5状态。

从图中可以看出,每1秒钟PA5的状态翻转一次。

图 28 定时器仿真结果

8.   串口功能仿真(1)安装虚拟串口工具

下载工具https://dl.pconline.com.cn/download/825163.html

并进行安装,虚拟两个串口。这两个串口内部是联通的。就是COM8的输入发送给COM9,COM9的输入发送给COM8。

图 29 虚拟串口安装

(2)安装串口调试工具

找一个通用的串口工具,网上很多,推荐一个  串口调试助手。测试一下虚拟串口

https://dl.pconline.com.cn/download/525064.html

(3)检查STM32F103的串口配置

在cubmx中已经进行了串口2的配置。开启串口的接收中断功能。就是串口发送采用拥塞模式,串口接收采用中断模式,这是大量工程应用中使用的模式。串口还有很多模式,都可以设置模拟。

(4)修改main主程序

思路:定义一个全局数组myUart2ReBuf用来接收串口数据。每接收1个字符产生一次接收中断,然后进行处理,准备接收下一个字符。在main程序的while循环中,循环发送字符串数据。

程序如图27到29所示。

下面是用到的部分代码。

uint8_t myUart2ReBuf[100];

HAL_UART_Receive_IT(&huart2,myUart2ReBuf,1); //

HAL_UART_Transmit(&huart2,"1234\r\n",6,1000);

 

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)

{

         if(huart==&huart2)

         {

                  HAL_UART_Receive_IT(&huart2,myUart2ReBuf,1);

                  uint8_t mydata=myUart2ReBuf[0];

                  HAL_UART_Transmit(&huart2,&mydata,1,1000);

                  HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_5);

         }

}

  

(5)MCU串口与虚拟绑定

在MCU中用的UART2,需要绑定在刚才产生的虚拟串口COM8上。

首先启动debug调试模式,在此模式下,在左下窗口输入如下两条命令

MODE COM8  115200,0,8,1      //启动串口8,波特率为115200,无奇偶校验,8个数字为,1个停止位

ASSIGN COM8  S2OUT    //COM8绑定在串口2的输入和输出,S2代表串口2.

 

   

(6)仿真开始

利用RUN按钮,开始调试模式。然后利用串口助手开启COM9,COM9和COM8是互通的,com8跟UART2也是绑定的,因此COM9就是跟UART2联通的。Com9就接收到了uart2发送的数据,并能给UART2发送数据,效果如下图所示。

9.   不能用于AD/DA的软件模拟仿真

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3