Pretues和Keil使用stm32F103C6芯片实现跑马灯

一、Protues创建工程

添加好名称,不断下一步就行:

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

二、pretues添加原件,构建电路图;

在这里插入图片描述
在这里插入图片描述

二、keil做代码:

添加文件这里不做说明,注意一下几个点:
1.芯片使用stm32F103c6
在这里插入图片描述

2.mdk的汇编文件随之改变
在这里插入图片描述

3.宏定义改成stm32F103c6的宏
在这里插入图片描述

4.主函数代码实现:

#include "stm32f10x.h"
GPIO_InitTypeDef GPIO_InitStructure;
void delay(unsigned int ms)//时间不准确,只是一个简单的延迟
{
	for(int i = 0;i < 1000;i++)
	{
		for(int j = 0;j < ms; j++);
	}
}
int main(void)
{
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);//初始化A口
  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(GPIOA, &GPIO_InitStructure);
  while (1)
  {
			for(int i = 0;i < 8;i++)//第一个灯到第8个
			{
				GPIOA->BSRR = (1 << i);
				delay(100);//亮
				GPIOA->BRR = (1 << i);
				delay(100);//灭
			}
			for(int i = 0; i <8; i++)//8个同时亮灭8次
			{	
			  GPIOA->BSRR = 0xff;
				delay(100);//亮				
				GPIOA->BRR = 0xff;
				delay(100);//灭
			}
	}
}
#ifdef  USE_FULL_ASSERT
#endif

5.mdk中的.s文件中的SystemInit函数没有实现入口,可能会产生链接错误,所以在stm32F103_gpio.c中添加函数实现,为空即可。

在这里插入图片描述
在这里插入图片描述

6.生成.hex文件
在这里插入图片描述

编译一下:
在这里插入图片描述

四、Protues电路图整合Keil生成的.Hex文件

protues中右击芯片编辑属性添加.hex文件(mdk/Objects/);.

在这里插入图片描述

五、实验结果:
1到8个灯分别开始亮灭
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

8个灯全亮全灭8次

在这里插入图片描述
在这里插入图片描述

实验结束。

七、实验总结:

整个流程比较简单容易理解,但是过程中遇到很多奇奇怪怪的问题,比如,pretues仿真失败,需要改正电源设计,配置tmp,temp环境变量等等,keil使用stm32F103c6芯片需要修改一些对应的配置,无法访问某些文件,需要使用管理员权限打开keil进行操作,等等。整个实验下来,对pretues和keil的使用更加熟悉,加深了对stm32类芯片的理解。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值