利用Keil进行STM32F103RB芯片软件仿真模拟方法 |
您所在的位置:网站首页 › stm32有仿真软件吗 › 利用Keil进行STM32F103RB芯片软件仿真模拟方法 |
目录 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 |