在Proteus中仿真运行stm32程序

泽13proteus 2023-12-22 08:41:36 5410阅读 举报
Proteus仿真运行stm32程序
一、新建工程
二、原理图绘制
三、总结
一、新建工程
点击新建工程,设置好文件名及路径,点击下一步。
选择从选中的 模板中创建原理图,选择DEFAULT,点击下一步。
选择不创建PCB布版设计,点击下一步。
选择创建固件项目,系列选择Cortex-M3,然后选择STM32F103R6芯片,编译器选择Keil,点击下一步。
-到此点击完成,工程就创建好了。
二、原理图绘制
点击Proteus左侧工具栏的P进行添加元件LED和电阻。
使用添加的元件进行流水灯原理图的绘制。
打开keil,编写流水灯程序
这里给出主程序 main.c
#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=8;i>0;i--)
	  {
		delay_ms(99000);
		GPIOC->BRR=(1<<i);  
		  
		delay_ms(99000);
		GPIOC->BSRR=(1<<i);
	  }
	  for(i=0;i<8;i+=2)
	  {
		delay_ms(990000);
		GPIOC->BRR=(1<<i);  
		GPIOC->BRR=(1<<i+1);
		  
		delay_ms(990000);
		GPIOC->BSRR=(1<<i);
		GPIOC->BSRR=(1<<i+1);
	  }
		for(i=7;i>0;i-=2)
	  {
		delay_ms(990000);
		GPIOC->BRR=(1<<i);  
		GPIOC->BRR=(1<<i-1);
		  
		delay_ms(990000);
		GPIOC->BSRR=(1<<i);
		GPIOC->BSRR=(1<<i-1);
	  }
	}

}

在keil5进行编译,生成hex程序

回到proteus,双击stm32芯片,选择hex文件的路径,晶振选择8M。

点击左下角的按钮进行仿真

三、总结

通过这次我在proteus上进行stm32程序的仿真和运行,熟悉了proteus仿真运行stm32程序。仿真是一种非常重要的实验手段,它让我们在没有硬件可以上手的时候可以提前熟悉操作,避免实操中出现许多失误,所以熟悉proteus和keil进行仿真非常重要。






标签: #proteus#

版权声明:
作者:泽13
链接:https://www.dianziwang.net/p/62566d4e242c3.html
来源:proteus
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以点击 “举报”


登录 后发表评论
0条评论
还没有人评论过~