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

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

文章目录

一、前言

前阵子用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文件,使用管理员身份打开。
  • 这里可能有些机器会先弹出安装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)新建工程
  • (2)选择默认模板
  • (3)默认不创建PCB布版设计
  • (4)创建固件,选择相关STM32F103C6的固件,编译器选择MDK带的即可,也可以自己配置arm gcc
  • (5)然后下一步并完成即可:
  • (6)添加元器件

添加LED-RED:

添加电阻:

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

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

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

  • (1)进入MCU选择界面:
  • (2)左上角搜索STM32F103C6,之后选择一个型号即可,我们选择默认的第一个,之后选择开始项目:
  • (3)配置相关引脚(这里设置PA1-PA8为GPIO输出)
  • (4)时钟配置和Tools我们这里先不需要,在项目管理这里设置工程路径和工具链IDE即可(MDK这里选择MDK-ARM即可):

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

4、MDK编译生成hex文件

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

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

c 复制代码
...
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 */
}
...

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

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

Proteus工程中双击元器件导入hex文件:

然后调试->开始仿真即可:

四、最后

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

相关推荐
啦啦右一几秒前
前端 | MYTED单篇TED词汇学习功能优化
前端·学习
霍格沃兹测试开发学社测试人社区29 分钟前
软件测试学习笔记丨Flask操作数据库-数据库和表的管理
软件测试·笔记·测试开发·学习·flask
今天我又学废了1 小时前
Scala学习记录,List
学习
王俊山IT1 小时前
C++学习笔记----10、模块、头文件及各种主题(一)---- 模块(5)
开发语言·c++·笔记·学习
极客小张1 小时前
基于STM32的智能充电桩:集成RTOS、MQTT与SQLite的先进管理系统设计思路
stm32·单片机·嵌入式硬件·mqtt·sqlite·毕业设计·智能充电桩
Mephisto.java2 小时前
【大数据学习 | kafka高级部分】kafka中的选举机制
大数据·学习·kafka
南宫生2 小时前
贪心算法习题其三【力扣】【算法学习day.20】
java·数据结构·学习·算法·leetcode·贪心算法
武子康3 小时前
大数据-212 数据挖掘 机器学习理论 - 无监督学习算法 KMeans 基本原理 簇内误差平方和
大数据·人工智能·学习·算法·机器学习·数据挖掘
使者大牙4 小时前
【大语言模型学习笔记】第一篇:LLM大规模语言模型介绍
笔记·学习·语言模型
As977_4 小时前
前端学习Day12 CSS盒子的定位(相对定位篇“附练习”)
前端·css·学习