当前位置:首页 > 公众号精选 > 玩转单片机与嵌入式
[导读]▼点击下方名片,关注公众号▼欢迎关注【玩转单片机与嵌入式】公众号,回复关键字获取更多免费资料。回复【加群】,限时免费进入知识共享群;回复【3D封装库】,常用元器件的3D封装库;回复【电容】,获取电容、元器件选型相关的内容;回复【阻抗匹配】,获取电磁兼容性、阻抗匹配相关的资料回复【...


01前言



在学习51单片机的时候,经常会使用keil protues的方式来做一些实验,这样的模拟仿真为我们节省了很多硬件和时间成本,可以更直观的看到代码的执行过程。



那么当切换到stm32系列单片机的时候,有些版本的protues可能不支持了(有的版本也支持STM32仿真),但是keil的模拟功能还是有很大的用处,例如stm32f103单片机,在keil中可以实现很好的模拟效果。




我们可以在其中使用中断、定时器、PWM等功能,可以观测到GPIO的输出情况。然而keil对stm32系列单片机不是很好的支持,如果换一个型号,你会发现完全无法模拟!!!



02配置keil,模拟stm32系列单片机



我们可以通过修改某些地方来实现keil对stm32的模拟功能。


1)首先来修改“debug”标签的内容



“Use simulaor”代表要使用软件模拟仿真


“dialog DLL”的内容是“DARMSTM.DLL“,表示使用STM系列


“parameter”的内容是“-pSTM32F051C8“,这里匹配的是当前单片机的型号


2)initialization file


先来看一下这个文件的内容


map 0x40000000,0x4000ffff read write


map 0x40010000,0x4001ffff read write


map 0x40020000,0x4002ffff read write


map 0x48000000,0x4800ffff read write


这段内容其实是在设置单片机的内存地址的读写特性,上面的这几段地址都是可读可写的。C语言就是在存储器里不停的寻址,然后执行指令,那为什么会是上面这些地址呢?可以查看stm32f051单片机的存储器映射



上面只是截取部分存储器的映射情况,这是AHB2的地址。例如你要使用RCC功能,那么可以看到0x40021000•0x400213ff这部分地址需要有读写属性。


03跟踪某个变量


1)找到逻辑分析仪


完成了基本的配置以后,我们就可以debug了



Debug按钮就不用多说了,中间有一个按钮时逻辑分析仪,我们可以点击它,唤醒逻辑分析功能。逻辑分析仪可以帮助我们以图形的方式来观测某个型号。


2)给逻辑分析仪添加变量



将鼠标定位到全局变量x的左侧,右键-->add x to-->logic analyzer,这样就可以将变量x添加到逻辑分析仪窗口,此时如果点击运行,可以在窗口看到x变量的曲线



3)修改显示效果


从上面的图可以看到,由于x是一个uint8类型的变量,因此取值范围是0~255。但是这样有时候看不出x的变化情况,因此我需要修改逻辑分析仪的显示效果。点击setup,弹出下面的对话框,我们可以修改去x的显示颜色和显示范围



修改之后的显示效果,可以看出来x每2s增加一次,这也正符合代码的逻辑



04使用systick


上面的x变量显示2s增加一次,原因是我们在代码里面使用了cube库的HAL_Delay函数做了延时,来看一下代码



在cube库中,这个延时函数使用的是systick功能,也许你模拟出的图像显示x不会变化,那是因为你的systick功能没有配置好


1)点击peripheral---core peripheral---system tick timer



2)按照下面的方式,使能systick



3)去掉代码中的等待


如果你在配置时钟代码的时候,有一些状态的等待,那么你需要关掉它,否则无法模拟仿真的



05追踪GPIO


如果你的代码中要输出一个pwm波,那么逻辑分析仪是好的结果勘测仪器,但是你没有逻辑分析仪,那么还是来软件模拟一下吧。现在假如我使用stm32f051c8这个芯片,在PB2口输出一个pwm波形,那么我们来模拟仿真一下



我们在keil软件的下方可以看到一个command窗口,在其中输入一条指令:


La  (*((volatile unsigned int *)0x48000414))>>2


上面的指令是在逻辑分析仪中跟踪某个变量,这个变量的地址是0x48000414的bit2,


翻阅手册你可以看到,这个地址正好是PB2。。。这样我们就看到下面的结果



End






本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

摘要:基于数字孪生技术,依托Unity引擎开发虚拟调试应用。通过机器人工作站实例进行虚拟调试仿真,基于socket通信,通过三菱PLC对虚拟机器人工作站进行虚拟调试,检测工作站结构设计的合理性、信号配置和逻辑设计的正确性...

关键字: 数字孪生 虚拟调试 仿真

麦格纳(MAGNA)正在进行一项1.2亿美元的投资,在印度班加罗尔建立和运营一座全新工程中心,旨在为出行电动化提供支持。该设施占地约2.2万平方米,预计将于2023年第一季度开业,届时该中心将聘请众多经验丰富的工程师和技...

关键字: 工程师 仿真 电动汽车 软件

客户可以针对图形和仿真基础部署Supermicro服务器,以大规模建构及运行元宇宙应用——系统将支持多达8个NVIDIA L40 GPU、ConnectX-7 SmartNI...

关键字: NVIDIA MICRO SUPER 仿真

摘 要:单螺杆空气压缩机的转子啮合副对间隙控制的精度要求很高 ,星轮轴系是啮合副的核心元件 ,作用在星轮轴系上的各力 会引起轴系变形 ,变形集中于星轮齿啮入螺槽部分及星轮轴轴承安装处 ,运用ANSYS/workben...

关键字: ANSYS 应变 仿真

据业内消息,华大九天昨天披露了投资者关系活动记录表,华大九天表示在电路的仿真工具相关领域突破核心技术,精度和性能得到了双维度提升,适用于仿真精度和性能要求较高的模拟芯片设计。

关键字: EDA 仿真

摘 要:通过对智能移动平台和六自由度机器人的调研分析 ,提出了新型智能片盒搬运小车的概念 ,并进行了设计研究。结合激光 导航AGV ,配合六轴协作机械臂 ,可在机台、stocker、e-Rack之间进行FOUP搬运。

关键字: 智能移动平台 六自由度机器人 仿真

摘要:基于10台计算机数控机床(CNC)和1辆轨道式自动引导车(RGV)组成的智能加工系统,设计了RGV动态调度策略,包括CNC工序分配、CNC编号奇偶优先和RGV任务分派策略,建立了以系统作业效率最大化和RGV移动时间...

关键字: 调度策略 仿真 粒子群算法

北京2022年9月7日 /美通社/ -- 近日,由南京市工业和信息化局、江宁区政府等单位共同主办,江宁高新区管委会等单位承办,主题为"拥抱元宇宙  一起向未来"的中国江宁首届元宇宙产业发展高...

关键字: 仿真 数字化 工业互联网 BSP

伦敦2022年8月29日 /美通社/ -- 继此前Canonical宣布Ubuntu已可运行于RISC-V 处理器及硬件之后,现在自豪地宣布发布支持更多款RISC-...

关键字: UBUNTU 开发板 RISC-V CANONICAL

摘要:针对变电站内部环境特点及作业任务需求,提出了一种平稳性高、越障能力强及环境适应性好的新型带电水冲洗机器人机构。介绍了包含履腿复合机构的履带式移动底盘机构构型,分析了移动底盘的工作机理、行走模式及越障流程。利用DH法...

关键字: 履腿式 移动车体 仿真

玩转单片机与嵌入式

125 篇文章

关注

发布文章

编辑精选

技术子站

关闭