欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Proteus仿真STM32流水灯

程序员文章站 2022-06-08 19:38:45
...

一.创建工程

Proteus仿真STM32流水灯
Proteus仿真STM32流水灯
Proteus仿真STM32流水灯
本次实验为STM32的实验,所以选择STM32F103R6
Proteus仿真STM32流水灯

二、配置实验所需原件

1.创建项目完成

Proteus仿真STM32流水灯

2.添加实验所需灯,点击左边P,在关键字中输入LED

我选择了一个黄色的LED灯
Proteus仿真STM32流水灯

3.添加实验所需电阻,在关键字中输入RES

Proteus仿真STM32流水灯

4.设定电阻值为50(电阻的默认阻值过大,LED灯不会亮)

Proteus仿真STM32流水灯

5.连接电路,如图所示

Proteus仿真STM32流水灯

三、使用keil生成hex文件

程序如下:
Proteus仿真STM32流水灯
主程序代码如下

#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<8;i++)
	  {
		  delay_ms(99000);
		  GPIOC->BRR=0x000000ff;
		  
		  delay_ms(99000);
		  GPIOC->BSRR=0x000000ff;
		  
	  }

	}

选择Option for Target,然后勾选Create HEX file,生成hex文件
Proteus仿真STM32流水灯

四.仿真调试

1.添加刚刚生成的hex文件,更改Crystal Frequency为8M

Proteus仿真STM32流水灯

2.运行

仿真结果如下:
Proteus仿真STM32流水灯
Proteus仿真STM32流水灯
Proteus仿真STM32流水灯