一、新建工程
- 点击新建工程,设置好文件名及路径,点击下一步。
- 选择从选中的 模板中创建原理图,选择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进行仿真非常重要。