采用Proteus仿真运行stm32流水灯程序

一、Proteus中创建原理图

  1. 创建工程
    ①打开Proteus,选择新建工程
    在这里插入图片描述
    ②进行工程名称填写,路径的选择
    在这里插入图片描述
    ③选择从选中的模板中创建原理图,模板选择DEFAULT

    ④选择创建固件项目,系列选择Cortex-M3,Controller选择STM32103R6
    在这里插入图片描述
    ⑤工程创建完成,点击完成
    在这里插入图片描述
  2. 选择所需要的元件
    创建工程完成后,图中就会显示出自己所选的型号的芯片,STM32F103R6,系统并以配置好电源
    在这里插入图片描述
    选择元件的方法
    在这里插入图片描述
  3. 绘制原理图
    将元件选中,画布中就可以绘制了。在画布上双击元件,可以对于元件的一些信息进行修改。
    绘制完成的原理图
    在这里插入图片描述

二、keil编写程序

  1. keil的配置
    下载外设库
    下载地址:https://github.com/2414466154/seven
  2. 建立一个工程
    新建的工程要与外设库的路径一致,工程名称可以随便填写,图中的红框的文件则是外设库文件
    在这里插入图片描述
    选择对应的芯片,根据Proteus原理图,芯片选择STM32103R6。接下来就是新添加两个组,将组的名称修改为外设库文件的名称。
    添加文件
    在这里插入图片描述
    点击魔法棒,在弹出的界面中,点击C/C++,在Define中填写USE_STDPERIPH_DRIVER
    在这里插入图片描述
    接下来,点击Include Path,在弹出的界面中进行路径的添加(路径添加尽量使用每行后面三点的标志按钮,进行路径选择,手动填写路径,可能不够准确)
    在这里插入图片描述
    接下来,点击魔法棒,查看Output是否勾选生成Hex文件
    在这里插入图片描述
  3. 程序代码
#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;
		  
	  }

	}
}

运行结果:
在这里插入图片描述

三、Proteus仿真

  1. 配置芯片信息
    原理图上双击芯片,在弹出的界面对信息进行修改或添加
    在这里插入图片描述
  2. 仿真效果(每个灯依次闪烁一次,让所有灯一起闪烁8次)
    在这里插入图片描述

四、总结

由于之前做过51芯片的流水灯仿真,使用Proteus画原理图的过程还是比较轻松。但是,在使用keil编写程序上还是存在一些问题。整个过程,主要出现问题的地方也是集中在keil上,特别时在对外设库添加上,并不是外设库所以内容都得添加进去。还有就是在路径添加上,开始自己采用手动填写,编译程序时,就一直报某些文件找不到的错误,在多次尝试后,才发现时路径填写有问题,在这里用了较久的时间。

五、参考资料

  1. Proteus仿真STM32流水灯实验例程、详细步骤
  2. stm32入门项目配置及Led实验(proteus)
  3. 提示…\CMSIS\stm32f10x.h(383): error: #67: expected a "}"错误
  4. More than one section matches selector - cannot all be FIRST/LAST的解决方法(包含只有一个启动文件的解决方法)
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值