Young87

SmartCat's Blog

So happy to code my life!

游戏开发交流QQ群号60398951

当前位置:首页 >跨站数据测试

利用Proteus和keil5仿真运行stm32程序

一、创建工程

注:此处使用的版本为proteus8.9,该版本自带stm32库,较为方便打开软件时一定要右键选择用管理员身份打开,否则可能出现找不到器件库的问题。

1.1打开peoteus8.9点击创建新工程,输入工程名、安装路径。

1.2 选择从选中的模板中创建原理图(DEFAULT)、选择不创建PCB布版设计。
在这里插入图片描述
在这里插入图片描述

1.3.选择创建固件项目,其中:系列选择Cortex-M3,Controller选择STM32F103R6,点击下一步,然后创建成功。
在这里插入图片描述
在这里插入图片描述

二、配置实验所需原件

2.1 完成创建如图所示
在这里插入图片描述
2.2 添加实验所需要的元器件
在这里插入图片描述
2.3 连线,画出仿真电路图
在这里插入图片描述

三、准备工作

3.1 新建project文件夹,并在里面新建三个文件夹,CMSIS(存放内核函数及启动引导文件),FWLIB(存放库函数),USER(存放用户自己的函数)。
在这里插入图片描述
3.2 在CMSIS中存放如下文件
在这里插入图片描述
3.3 在FWLIB中存放如下文件
在这里插入图片描述
3.4 在USER中存放如下文件
在这里插入图片描述

四、keil配置

4.1打开keil5,创建新工程led(注意需保存在刚刚创建的project文件夹里)

4.2选择图示图标
在这里插入图片描述
4.3把Tegat1改成test,并进行如图所示配置。
在这里插入图片描述
4.4点击如图所示标志
在这里插入图片描述
4.5 进入C/C++设置界面,在define一栏输入 STM32F10X_HD,USE_STDPERIPH_DRIVER ,并在includepath栏加入头文件路径。
在这里插入图片描述
4.6 在output中一定要选择生成hex文件选项。
在这里插入图片描述

五、keil中编写并编译代码
5.1 新建空白文本,并写入代码
代码如下:

#include "stm32f10x.h"
GPIO_InitTypeDef GPIO_InitStructure;
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;
int main(void)
{
  
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);

	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(GPIOC, &GPIO_InitStructure);

	GPIOC->BSRR=0xff;
	//单个灯循环亮
	while (1)
	{
	  for(i=0;i<8;i++)
	  {
		delay_ms(99000);
		GPIOC->BRR=(1<<i);  
		  
		delay_ms(99000);
		GPIOC->BSRR=(1<<i);
	  }
		//四灯循环亮
	  for(i=0;i<16;i++)
	  {
			if(i%2==0)
		  {	
				delay_ms(99000);
				GPIOC->BRR=0x000000f0;
				delay_ms(99000);
				GPIOC->BSRR=0x000000f0;
			}
			else
			{	
				delay_ms(99000);
				GPIOC->BRR=0x0000000f;
				delay_ms(99000);
				GPIOC->BSRR=0x0000000f;
			}
	  }
		//八个灯循环亮
		for(i=0;i<8;i++)
	  {
				delay_ms(99000);
				GPIOC->BRR=0x000000ff;
				delay_ms(99000);
				GPIOC->BSRR=0x000000ff;
				delay_ms(99000);
				GPIOC->BRR=0x000000ff;
				delay_ms(99000);
				GPIOC->BSRR=0x000000ff;
		}
				
	}

}

5.2 把该文件加入到工程中
在这里插入图片描述
在这里插入图片描述

5.3编译
在这里插入图片描述
5.4 可以看到生成了hex文件
在这里插入图片描述

六、在proteus中运行

6.1 双击芯片,将刚刚生成的hex文件添加到芯片中
在这里插入图片描述
在这里插入图片描述
6.2 运行仿真,可以看到结果和预期一致。

七、参考资料

除特别声明,本站所有文章均为原创,如需转载请以超级链接形式注明出处:SmartCat's Blog

上一篇: Altium Designer绘制stm32原理图及PCB板

下一篇: 矩阵链乘最小代价(动态规划)

精华推荐