Proteus基于HAL库仿真STM32F103C8T6

环境搭建

安装STM32CubeMX

在安装CubeMX之前先安装java环境

java下载链接:https://javadl.oracle.com/webapps/download/AutoDL?BundleId=249203_b291ca3e0c8548b5a51d5a5f50063037

ST官网搜索 STM32CubeMX,下载对应电脑平台的最新版本

下载页面:https://www.st.com/zh/development-tools/stm32cubemx.html

安装MDK-ARM

keil官网点击Download,访问产品下载页面,进入MDK-ARM下载页面,下载MDK539.exe,我当前看到的是MDK539.exe

下载页面:https://www.keil.com/demo/eval/arm.htm

安装Proteus

微信公众号搜索软件管家,进入公众号下载目录,找到proteus,下载最高版本

可通过浏览器打开软件管家软件目录,在页面搜索找到 proteus

软件管家公众号软件目录:https://mp.weixin.qq.com/s/uaqvED0_vFcqXmgkTlKYpQ

Proteus 8.15下载链接:https://mp.weixin.qq.com/s?__biz=MzA4MjU4MTg2Ng==&mid=2247515066&idx=5&sn=ba4b87dad87c1f13ccc595934269bfaa&chksm=9f817bbfa8f6f2a9cd6e6690e6a791ca3fd43f9bddf8ea06d2da4b07c28ce5600d79703d72f5&scene=21#wechat_redirect

Proteus搭建STM32F103C8T6最小系统

图中有一个绿色的LED灯作为电源指示灯

最小系统配置:/images/stm32/Proteus基于HAL库仿真STM32F103C8T6/png1.png

芯片配置:/images/stm32/Proteus基于HAL库仿真STM32F103C8T6/png4.png

Proteus仿真实现流水灯

proteus配置原理图

Proteus流水灯原理图:/images/stm32/Proteus基于HAL库仿真STM32F103C8T6/png8.png

CubeMX配置STM32F103C8T6

GPIO配置:/images/stm32/Proteus基于HAL库仿真STM32F103C8T6/png2.png

RCC配置:/images/stm32/Proteus基于HAL库仿真STM32F103C8T6/png3.png

时钟配置:/images/stm32/Proteus基于HAL库仿真STM32F103C8T6/png5.png

工程管理-Project:/images/stm32/Proteus基于HAL库仿真STM32F103C8T6/png6.png

工程管理-Code Generator:/images/stm32/Proteus基于HAL库仿真STM32F103C8T6/png7.png

最后生成代码并打开keil

keil核心代码

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
	  /* USER CODE END WHILE */
	  HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_RESET);
	  HAL_GPIO_WritePin(LED2_GPIO_Port, LED2_Pin, GPIO_PIN_SET);
	  HAL_GPIO_WritePin(LED3_GPIO_Port, LED3_Pin, GPIO_PIN_SET);
	  HAL_GPIO_WritePin(LED4_GPIO_Port, LED4_Pin, GPIO_PIN_SET);
	  HAL_Delay(500);
	  HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_SET);
	  HAL_GPIO_WritePin(LED2_GPIO_Port, LED2_Pin, GPIO_PIN_RESET);
	  HAL_GPIO_WritePin(LED3_GPIO_Port, LED3_Pin, GPIO_PIN_SET);
	  HAL_GPIO_WritePin(LED4_GPIO_Port, LED4_Pin, GPIO_PIN_SET);
	  HAL_Delay(500);
	  HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_SET);
	  HAL_GPIO_WritePin(LED2_GPIO_Port, LED2_Pin, GPIO_PIN_SET);
	  HAL_GPIO_WritePin(LED3_GPIO_Port, LED3_Pin, GPIO_PIN_RESET);
	  HAL_GPIO_WritePin(LED4_GPIO_Port, LED4_Pin, GPIO_PIN_SET);
	  HAL_Delay(500);
	  HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_SET);
	  HAL_GPIO_WritePin(LED2_GPIO_Port, LED2_Pin, GPIO_PIN_SET);
	  HAL_GPIO_WritePin(LED3_GPIO_Port, LED3_Pin, GPIO_PIN_SET);
	  HAL_GPIO_WritePin(LED4_GPIO_Port, LED4_Pin, GPIO_PIN_RESET);
	  HAL_Delay(500);
	  /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
Licensed under CC BY-NC-SA 4.0