一、Protues创建工程

添加好名称,不断下一步就行:

protues有stm32zet6吗 proteus stm32f103c6_protues有stm32zet6吗


protues有stm32zet6吗 proteus stm32f103c6_i++_02

protues有stm32zet6吗 proteus stm32f103c6_3c_03


protues有stm32zet6吗 proteus stm32f103c6_3c_04

二、pretues添加原件,构建电路图;

protues有stm32zet6吗 proteus stm32f103c6_3c_05


protues有stm32zet6吗 proteus stm32f103c6_i++_06

二、keil做代码:

添加文件这里不做说明,注意一下几个点:

1.芯片使用stm32F103c6

protues有stm32zet6吗 proteus stm32f103c6_3c_07

2.mdk的汇编文件随之改变

protues有stm32zet6吗 proteus stm32f103c6_protues有stm32zet6吗_08

3.宏定义改成stm32F103c6的宏

protues有stm32zet6吗 proteus stm32f103c6_protues有stm32zet6吗_09

4.主函数代码实现:

#include "stm32f10x.h"
GPIO_InitTypeDef GPIO_InitStructure;
void delay(unsigned int ms)//时间不准确,只是一个简单的延迟
{
	for(int i = 0;i < 1000;i++)
	{
		for(int j = 0;j < ms; j++);
	}
}
int main(void)
{
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);//初始化A口
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1|GPIO_Pin_2 														
																|GPIO_Pin_3|GPIO_Pin_4 | GPIO_Pin_5|GPIO_Pin_6 | GPIO_Pin_7;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
  while (1)
  {
			for(int i = 0;i < 8;i++)//第一个灯到第8个
			{
				GPIOA->BSRR = (1 << i);
				delay(100);//亮
				GPIOA->BRR = (1 << i);
				delay(100);//灭
			}
			for(int i = 0; i <8; i++)//8个同时亮灭8次
			{	
			  GPIOA->BSRR = 0xff;
				delay(100);//亮				
				GPIOA->BRR = 0xff;
				delay(100);//灭
			}
	}
}
#ifdef  USE_FULL_ASSERT
#endif

5.mdk中的.s文件中的SystemInit函数没有实现入口,可能会产生链接错误,所以在stm32F103_gpio.c中添加函数实现,为空即可。

protues有stm32zet6吗 proteus stm32f103c6_protues有stm32zet6吗_10


protues有stm32zet6吗 proteus stm32f103c6_i++_11

6.生成.hex文件

protues有stm32zet6吗 proteus stm32f103c6_i++_12

编译一下:

protues有stm32zet6吗 proteus stm32f103c6_i++_13

四、Protues电路图整合Keil生成的.Hex文件

protues中右击芯片编辑属性添加.hex文件(mdk/Objects/);.

protues有stm32zet6吗 proteus stm32f103c6_i++_14

五、实验结果:

1到8个灯分别开始亮灭

protues有stm32zet6吗 proteus stm32f103c6_i++_15

protues有stm32zet6吗 proteus stm32f103c6_i++_16


protues有stm32zet6吗 proteus stm32f103c6_protues有stm32zet6吗_17

protues有stm32zet6吗 proteus stm32f103c6_电路图_18

protues有stm32zet6吗 proteus stm32f103c6_protues有stm32zet6吗_19

protues有stm32zet6吗 proteus stm32f103c6_电路图_20

protues有stm32zet6吗 proteus stm32f103c6_i++_21


protues有stm32zet6吗 proteus stm32f103c6_i++_22

8个灯全亮全灭8次

protues有stm32zet6吗 proteus stm32f103c6_protues有stm32zet6吗_23


protues有stm32zet6吗 proteus stm32f103c6_protues有stm32zet6吗_24

实验结束。

七、实验总结:

整个流程比较简单容易理解,但是过程中遇到很多奇奇怪怪的问题,比如,pretues仿真失败,需要改正电源设计,配置tmp,temp环境变量等等,keil使用stm32F103c6芯片需要修改一些对应的配置,无法访问某些文件,需要使用管理员权限打开keil进行操作,等等。整个实验下来,对pretues和keil的使用更加熟悉,加深了对stm32类芯片的理解。