stm32学习总结:3、Proteus8+STM32CubeMX+MDK很有搞头

stm32学习总结:3、Proteus8+STM32CubeMX+MDK很有搞头

文章目录

  • stm32学习总结:3、Proteus8+STM32CubeMX+MDK很有搞头
    • 一、前言
    • 二、资料收集
    • 三、实际案例-点灯
      • 1、Proteus8安装
      • 2、Proteus创建stm32F013C6项目并添加外围LED电路
      • 3、STM32CubeMX配置F103C6引脚生成MDK工程
      • 4、MDK编译生成hex文件
      • 5、Protens导入hex文件进行仿真
    • 四、最后

一、前言

前阵子用codesys的软PLC方案来仿真测试了PLC,以此研究了一阵子PLC和profinet,感触颇深,这种仿真软件还真是挺好用的,硬件软件化真的很方便。最近stm32上有个使用 ADAU1361进行录放音的研究,正好找到了仿真stm32的方案:Proteus,这个时候我发现这个不就是我们大学仿真C51的时候用的软件吗,时间太长不搞这块的开发感觉都快忘的差不多了,实际软件开发做多了感觉这类电子控制类的开发也变得有意思了,PLC、C51搞的有点返祖的感觉了。目前Proteus仿真stm32有一些型号还没有,但是作为基础研究学习是够了。此外,正好借着这个机会早点把stm32这块的一些基础开发总结完,也拖了不少时间了,后续有时间再进阶总结一下使用freertos+stm32cubemx相关的内容。

二、资料收集

Proteus安装:https://blog.csdn.net/weixin_44543463/article/details/116203188
Proteus使用资料:http://www.tup.tsinghua.edu.cn/upload/books/yz/051322-01.pdf
Proteus仿真stm32:https://blog.csdn.net/mistake11a/article/details/109555825
STM32CubeMX也再熟悉一下:https://www.st.com/resource/zh/user_manual/um1718-stm32cubemx-for-stm32-configuration-and-initialization-c-code-generation-stmicroelectronics.pdf

三、实际案例-点灯

1、Proteus8安装

参考对应博客直接下载安装即可,太过于详细了。
百度网盘链接:https://pan.baidu.com/s/1EHGewnvjcnEpPbXnR1qLIA
提取码: pr89

  • (1)右键压缩包,进行解压。进入解压的文件夹,右键p8.9.sp0.exe文件,使用管理员身份打开。

image.png

  • 这里可能有些机器会先弹出安装Visual C++的一个界面,一定要安装这些勾选的组件,否则后续安装会出现问题。

  • (2)莫得选择,next

  • (3)I accept,然后next

  • (4)选择使用本地的激活证书license key。

  • (5)继续next

  • (6)这里会打开一个激活证书管理界面,点击左下角【Browse For Key File】,找到刚才解压出来的文件夹,里面解压后的【Proteus 8.9】文件夹中的【Crack】文件夹下的【Licence.lxk】文件,点击【打开】。


  • (7)点击 【install】,在弹出的对话框询问是否继续,选择 【是】,安装完成后点击【Close】。



  • (8)都不用勾选,直接【next】

  • (9)这里选择安装方式,选择【Custom】,然后选择要安装的路径,注意:两个路径一定要一样,否则后期软件使用时会闪退。


  • (10)这里不用管,默认【Next】就可以。

  • (11)继续【Next】

  • (12)点击【Install】开始安装,安装耗时一分钟左右。


  • (13) 点击【Close】,不要运行Proteus

  • (14)再次进入安装包解压后的【Proteus 8.9】文件夹中的【Crack】文件夹,选择所有文件【复制】。

  • (15) 在桌面找到【Proteus 8.9】的快捷方式,右键点击【打开文件所在的位置】

  • (16) 在空白处【右键-粘贴】,将刚才那三个文件复制过来。

  • (17) 右键粘贴后的【pp8.9】选择【以管理员身份运行】。(运行完成后不会弹出任何对话窗,运行一下就可以),建议关闭各种安全管家之后再运行。

  • (18) 再次打开解压后的【Proteus 8.9】文件夹,鼠标右击【Translations】选择【复制】。

  • (19)再次右键桌面【Proteus 8.9】的快捷方式,右键点击【打开文件所在的位置】

  • (20)点击路径中的【Proteus】文件夹,回到上一级。

  • (21)在空白处【右键-粘贴】,将刚才复制的Translation文件夹粘过来,可能会有27/28个同名文件,点击【替换目标中的文件】。

  • (22)进入【C:\Program Files (x86)\Labcenter Electronics】目录下,有一个【Proteus 8 Professional】文件夹,进入此文件夹,【全选-复制这两个文件夹】。

  • (23)回到Proteus的安装路径(同19、20步),【右键粘贴,替换目标文件】

  • (24)至此,安装完成!

2、Proteus创建stm32F013C6项目并添加外围LED电路

目前我们一般使用的最小板大多为F103C8T6,Proteus上没有C8的,但是在论坛上找到C6的引脚基本和C8是一样的(http://www.51hei.com/bbs/dpj-185185-1.html),只是Flash和RAM小一点,从下图看F103C4和F103CB也是可以作为简单demo来匹配C8的:

创建工程很简单,因为是中文版所以基本上应该都能看懂:

  • (1)新建工程

image.png

  • (2)选择默认模板

image.png

  • (3)默认不创建PCB布版设计

image.png

  • (4)创建固件,选择相关STM32F103C6的固件,编译器选择MDK带的即可,也可以自己配置arm gcc

image.png

  • (5)然后下一步并完成即可:

image.png

  • (6)添加元器件

image.png
添加LED-RED:
image.png
添加电阻:
image.png

  • (7)然后简单布线一下,这里需要相关的电子知识,一般LED需要的电流大小,设置的电阻大小、电压值计算、串并联等等,否则灯就亮不起来,或者实际硬件设计时导致烧掉元器件等问题:

image.png

3、STM32CubeMX配置F103C6引脚生成MDK工程

接着我们需要开发程序控制STM32F103C6的PA1-PA8输出电平来使得LED亮灭,这里我们锻炼使用STM32CubeMX来配置相关引脚,关于STM32CubeMX的安装之前已经有一些接触,这个还是比较推荐的,确实会省不少事。

  • (1)进入MCU选择界面:

image.png

  • (2)左上角搜索STM32F103C6,之后选择一个型号即可,我们选择默认的第一个,之后选择开始项目:

image.png

  • (3)配置相关引脚(这里设置PA1-PA8为GPIO输出)

image.png

  • (4)时钟配置和Tools我们这里先不需要,在项目管理这里设置工程路径和工具链IDE即可(MDK这里选择MDK-ARM即可):

image.png
最后点击右上角的GENERATE CODE生成代码即可,生成完成直接打开工程就进入MDK软件页了。

4、MDK编译生成hex文件

  • 1、点击魔法棒进入配置页面
  • 2、在配置页面的Output这里配置生成HEX文件
  • 3、写完代码最后进行编译或者重编译生成hex文件

这里我们控制GPIO的拉高拉低来闪烁LED灯,代码如下(主要是main.c的相关位置添加循环延时控制寄存器,也可以按部就班的写GPIO引脚的拉高拉低):

...
void delay_ms(uint32_t ms)
{uint32_t i_cnt,j_cnt;for(i_cnt=0; i_cnt < 3000; i_cnt++);for(j_cnt=0; j_cnt < ms; j_cnt++);}
uint32_t i;
/* USER CODE END 0 *//*** @brief  The application entry point.* @retval int*/
int main(void)
{/* USER CODE BEGIN 1 *//* USER CODE END 1 *//* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init *//* USER CODE END Init *//* Configure the system clock */SystemClock_Config();/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();/* USER CODE BEGIN 2 */GPIOA->BSRR = 0xff;/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */for(i = 0; i < 8; i++){delay_ms(99000);GPIOA->BRR = (1 << i);delay_ms(99000);GPIOA->BSRR= (1 << i);}for(i = 0; i < 8; i++){delay_ms(99000);GPIOA->BRR = 0x000000ff;delay_ms(99000);GPIOA->BSRR = 0x000000ff;}}/* USER CODE END 3 */
}
...

image.png
生成的hex文件位置(MDK项目目录下):
image.png

5、Protens导入hex文件进行仿真

Proteus工程中双击元器件导入hex文件:
image.png
然后调试->开始仿真即可:
GIF.gif

四、最后

Proteus确实好用,有的时候比开发板甚至面包板都好用,用于学习研究再好不过了,也避免了电路设计错误烧掉板子等问题,使用过程中也算是简单锻炼了设计电路的能力,但是有的时候相关的元器件型号缺失就显得比较鸡肋,从大学那时候学习的记忆看似乎更适合去仿真C51系列的单片机作为教学之类的。(比如我这里需要ADAU1361和STM32F411,但是相关元器件导入要登录之类的,甚至需要自己去设计电路图导入导出,这个时候就比较麻烦了,这对于一些新手就比较劝退,折腾不少时间,最后实际项目可能还有差异,所以有能力入手开发板和面包板的还是比较推荐这种方式,如果实在手头有限但有时间折腾的可以啃一下Proteus,还是可以省不少钱的;我后续会根据自己手头有的元器件来选择使用proteus还是实际元器件操作进行总结,我们也不必拘泥于这些外物,学到知识才是关键。)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/214279.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

12.10_黑马数据结构与算法笔记Java

目录 058 链表 e10 判环算法1 thinking&#xff1a;什么是空指针&#xff1f; 058 链表 e10 判环算法2 059 数组 e01 合并有序数组1 059 数组 e01 合并有序数组2 060 队列 链表实现1 061 队列 链表实现2 062 队列 环形数组实现 方法1-1 063 队列 环形数组实现 方法1-2…

带有 RaspiCam 的 Raspberry Pi 监控和延时摄影摄像机

一、说明 一段时间以来&#xff0c;我一直想构建一个运动激活且具有延时功能的树莓派相机&#xff0c;但从未真正找到我喜欢的案例。我在thingiverse上找到了这个适合树莓派和相机的好案例。它是为特定的鱼眼相机设计的&#xff0c;但从模型来看&#xff0c;我拥有的廉价中国鱼…

【Vulnhub 靶场】【Hackable: III】【简单 - 中等】【20210602】

1、环境介绍 靶场介绍&#xff1a;https://www.vulnhub.com/entry/hackable-iii,720/ 靶场下载&#xff1a;https://download.vulnhub.com/hackable/hackable3.ova 靶场难度&#xff1a;简单 - 中等 发布日期&#xff1a;2021年06月02日 文件大小&#xff1a;1.6 GB 靶场作者&…

Docker | 自定义网络

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏:Docker系列 ✨特色专栏: MySQL学习 🥭本文内容: Docker | 自定义网络 📚个人知识库: 知识库,欢迎大家访问 1.前言 大家好,我是Leo哥…

当视觉遇到毫米波雷达:自动驾驶的三维目标感知基准

​ 文章&#xff1a;Vision meets mmWave Radar: 3D Object Perception Benchmark for Autonomous Driving 作者: Yizhou Wang, Jen-Hao Cheng, Jui-Te Huang , Sheng-Yao Kuan , Qiqian Fu , Chiming Ni 编辑&#xff1a;点云PCL 欢迎各位加入知识星球&#xff0c;获取PDF…

vector类

> 作者简介&#xff1a;დ旧言~&#xff0c;目前大二&#xff0c;现在学习Java&#xff0c;c&#xff0c;c&#xff0c;Python等 > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 目标&#xff1a;熟悉vector库 > 毒鸡汤&#xff1a;从人生低谷…

【面试总结】Java面试题目总结(一)

&#xff08;以下仅为个人见解&#xff0c;如果有误&#xff0c;欢迎大家批评并指出错误&#xff0c;谢谢大家&#xff09; 1.项目中的验证码功能是如何实现的&#xff1f; 第一步&#xff1a;在项目的pom.xml文件中导入 EasyCaptcha 的依赖&#xff1b; <dependency>…

20231207给NanoPC-T4(RK3399)开发板刷Android12的挖掘机方案的LOG

20231207给NanoPC-T4(RK3399)开发板刷Android12的挖掘机方案的LOG 2023/12/7 23:50 SDK&#xff1a;rk356x_android12_220722.tgz 只修改DTS的DTC部分就【直接】可以跑NanoPC-T4 参考资料&#xff1a; http://www.friendlyelec.com.cn/agent.asp http://www.friendlyelec.com.c…

实现安装“自由化”!在Windows 11中如何绕过“您尝试安装的应用程序未通过微软验证”

这篇文章描述了如果你不能安装应用程序,而是当你在Windows 11中看到消息“您尝试安装的应用程序未通过微软验证”时该怎么办。完成这些步骤将取消你安装的应用程序必须经过Microsoft验证的要求。 使用设置应用程序 “设置”应用程序提供了绕过此警告消息的最简单方法,以便你…

python简易学生管理 + MySQL

数据库表 Python代码部分 import pymysqlclass StMgmt(object):def tips(self):"""提示用户选择的操作"""print("""学生管理系统 1.01.查看所有信息2.查看学生信息3.修改学生信息4.增加学生信息5.退出学生系统"""…

【网络安全技术】传输层安全——SSL/TLS

一、TLS位置及架构 TLS建立在传输层TCP/UDP之上&#xff0c;应用层之下。 所以这可以解决一个问题&#xff0c;那就是为什么抓不到HTTP和SMTP包&#xff0c;因为这两个在TLS之上&#xff0c;消息封上应用层的头&#xff0c;下到TLS层&#xff0c;TLS层对上层消息整个做了加密&…

<JavaEE> 经典设计模式之 -- 单例模式(“饿汉模式”和“懒汉模式”实现单例模式)

目录 一、单例模式概述 二、“饿汉模式”实现单例模式 三、“懒汉模式”实现单例模式 3.1 单线程下的“懒汉模式” 3.2 多线程下的“懒汉模式” 一、单例模式概述 1&#xff09;什么是单例模式&#xff1f; 单例模式是一种设计模式。 单例模式可以保证某个类在程序中只存…

【Java数据结构 -- 顺序表】

List和ArrayList与顺序表 一. List1.1 List介绍2.1 常见接口介绍3.1 List的使用 二. ArrayList与顺序表1.线性表2.顺序表2.1 接口的实现2.2 顺序表的创建2.3 顺序表的打印2.4 顺序表的插入2.5 顺序表的按索引位置插入数据2.6 判断顺序表是否包含某个数2.7 返回顺序表某个数的索…

2023-12学习笔记

1.NonNull要手动写无参构造器 这是一个我今天研究了很久的问题&#xff0c;开始不知道原因是在这里&#xff0c;还在那想是不是Data覆盖了无参构造&#xff0c;结果当然不是。先说下解决历程 1.问题起因 通过RequestBody接收前端报文的时候报错&#xff0c;大致是说我构造方…

python中tkinter实现GUI程序:三个实例

python中tkinter实现GUI程序 写在最前面Python中使用Tkinter实现GUI程序的基本元素Tkinter简介基本元素1. 根窗口&#xff08;Root Window&#xff09;2. 小部件&#xff08;Widgets&#xff09;3. 布局管理4. 事件处理 1.用 tkinter实现一个简单的 GUI程序,单击“click”按钮&…

Java项目-瑞吉外卖Day3

填充公共字段&#xff1a; 目的&#xff1a;由于某些属性&#xff0c;例如createdTime这些需要填充的字段会在多个地方出现&#xff0c;所以考虑使用公共字段自动填充的办法减少重复代码。 在对应属性上加入TableField注解。通过fill字段表明策略&#xff0c;是插入/更新的时候…

如何搭建废品上门回收小程序

如今&#xff0c;随着环境保护意识的增强&#xff0c;废品的回收和再利用变得越来越重要。为了方便人们进行废品回收&#xff0c;搭建一个废品上门回收的小程序成为了一个不错的选择。本文将介绍如何从零开始搭建一个废品上门回收小程序。 …

【Go自学版】02-goroutine

利用时间片分割进程&#xff0c;致使宏观上A,B,C同时执行&#xff08;并发&#xff09; CPU利用率包含了执行和切换&#xff0c;进程/线程的数量越多&#xff0c;切换成本也会增大 最大并行数&#xff1a;GOMAXPROCS work stealing: 偷其他队列的G hand off: 当前G1阻塞&#…

css 修改滚动条样式,解决Windows浏览器中滚动条不美观问题

Windows环境中的浏览器中滚动条默认是直接显示了&#xff0c;不管光标是否进入该区域&#xff0c;这样就很不美观&#xff0c;如下图&#xff1a; 之前样式为 .well {display: block;background-color: #f2f2f2;border: 1px solid #ccc;margin: 5px;width: calc(100% - 12px);h…

mycat部署和配置读写分离(二)

说明&#xff1a; MyCAT 是使用 JAVA 语言进行编写开发&#xff0c;使用前需要先安装 JAVA 运行环境(JRE),由于 MyCAT 中使用了 JDK7 中的一些特性&#xff0c;所以要求必须在 JDK7 以上的版本上运行。 1. jdk1.8安装 详见jdk环境安装 2. Mysql安装 详见mysql8.0.11源码安装…