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#