STM32程序设计(跑马灯)以及STM32原理图绘制(通过ad软件)

STM32跑马灯程序设计及仿真

1、创建新的项目

在这里插入图片描述

2、选择stm32f103r6

选择r6的原因是新版proteus中自带r6的元件库,如果选择ZET6还需要另外在proteus安装库文件,具体可以去proteus官网搜索STM32库
在这里插入图片描述

3、主程序:

#include "stm32f10x.h" 
#include  "led.h"
#include   "stdio.h"
void Delay(u16 t)
{
 u32 i;
 while(t--)
  for(i=1;i<1000;i++);
}
int main(void) 
{ 
int i;  
LED_Init();//初始化LED
while(1)
{  
	GPIO_ResetBits(GPIOC,GPIO_Pin_0);//让PC_0口输出为低电平,从而使灯0亮
	Delay(200);//延时500ms

	GPIO_SetBits(GPIOC,GPIO_Pin_0);//灯0灭
	GPIO_ResetBits(GPIOC,GPIO_Pin_1);//灯1亮
	Delay(200);

	GPIO_SetBits(GPIOC,GPIO_Pin_1);//灯1灭
	GPIO_ResetBits(GPIOC,GPIO_Pin_2);//灯2亮
	Delay(200);

	GPIO_SetBits(GPIOC,GPIO_Pin_2);//灯2灭
	GPIO_ResetBits(GPIOC,GPIO_Pin_3);//灯3亮
	Delay(200);

	GPIO_SetBits(GPIOC,GPIO_Pin_3);//灯3灭
	GPIO_ResetBits(GPIOC,GPIO_Pin_4);//灯4亮
	Delay(200);

	GPIO_SetBits(GPIOC,GPIO_Pin_4);//灯4灭
	GPIO_ResetBits(GPIOC,GPIO_Pin_5);//灯5亮
	Delay(200);

	GPIO_SetBits(GPIOC,GPIO_Pin_5);//灯5灭
	GPIO_ResetBits(GPIOC,GPIO_Pin_6);//灯6亮
	Delay(200);

	GPIO_SetBits(GPIOC,GPIO_Pin_6);//灯6灭
	GPIO_ResetBits(GPIOC,GPIO_Pin_7);//灯7亮
	Delay(200);

	GPIO_SetBits(GPIOC,GPIO_Pin_7);//灯7灭
	Delay(200);

	GPIO_ResetBits(GPIOC,GPIO_Pin_0|GPIO_Pin_1);//灯0、1亮
	Delay(200);

	GPIO_SetBits(GPIOC,GPIO_Pin_0|GPIO_Pin_1);//灯0、1灭
	GPIO_ResetBits(GPIOC,GPIO_Pin_2|GPIO_Pin_3);//灯2、3亮
	Delay(200);

	GPIO_SetBits(GPIOC,GPIO_Pin_2|GPIO_Pin_3);//灯2、3灭
	GPIO_ResetBits(GPIOC,GPIO_Pin_4|GPIO_Pin_5);//灯4、5亮
	Delay(200);

	GPIO_SetBits(GPIOC,GPIO_Pin_4|GPIO_Pin_5);//灯4、5灭
	GPIO_ResetBits(GPIOC,GPIO_Pin_6|GPIO_Pin_7);//灯6、7亮
	Delay(200);
	GPIO_SetBits(GPIOC,GPIO_Pin_6|GPIO_Pin_7);//灯6、7灭
	for(i=0;i<=3;i++)
	{
		GPIO_ResetBits(GPIOC,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3);//灯0、1、2、3亮
		Delay(100);

		GPIO_SetBits(GPIOC,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3);//灯0、1、2、3灭
		GPIO_ResetBits(GPIOC,GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7);//灯4、5、6、7亮
		Delay(100);

		GPIO_SetBits(GPIOC,GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7);//灯4、5、6、7灭
	}
}
}

实现功能:能使得led灯先一个一个闪烁,后面两个一起依次闪烁,最后四个一起闪烁。

4、led.c程序

void LED_Init(void)
{
 
	GPIO_InitTypeDef  GPIO_InitStructure;
	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);
	GPIO_SetBits(GPIOC,GPIO_Pin_0 | GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7);
}

目的:初始化IO口,使能IO口时钟,调整IO口输出频率,设置IO口输出方式,初始化IO口输出方式。
运行前记得点击魔法棒
在这里插入图片描述
选择output
在这里插入图片描述
选择创建HEX文件
然后运行,这样就可以生成proteus可以执行的文件。

5、proteus电路图设计

在这里插入图片描述

6、注意事项:

6.1:选择Design

在这里插入图片描述

6.2:选择power rail configuration

在这里插入图片描述

6.3:将vss、vdda添加到右边

在这里插入图片描述

6.4:退出界面后双击32单片机

在这里插入图片描述
将所圈的地方改为72MHZ

7、添加HEX文件:

在这里插入图片描述

8、运行结果:

在这里插入图片描述

9、总结:

STM32程序开发相对51来说更加的方便,很多程序在商家层面就将程序封装好了,很多只需要调用即可,通过这次程序设计,我收益颇多,感觉32的学习也还行,没有想象中的那么困难。

STM32原理图绘制

1、下载安装AD软件

因为我之前就安装好了,具体过程可以搜索阿虚同学,找到计算机常用软件,软件管家会告诉你安装过程
直接上链接: 点击我
阿虚同学还有更多丰富的资料。大家也可以多多去看看
在这里插入图片描述

2、进入AD软件

在这里插入图片描述

3、新建项目:

在文件里选择新的,然后选择新的项目
在这里插入图片描述

4、创建原理图

同样在文件里选择新的,选择原理图

5、创建原理图库

同样咋文件里选择新的,选择库,在选择原理图库
在这里插入图片描述

6、添加STM32元件库

6.1 选择AD界面右下角panels

在这里插入图片描述

6.2选择components

在这里插入图片描述

6.3点击右边三条横杠

步骤如下:
在这里插入图片描述

6.4将元件库复制到文件夹中

在这里插入图片描述

6.5退出文件夹界面后添加、安装元件库

在这里插入图片描述

7、绘制原理图

元件在components中,相隔的线可以用直尺选项
在这里插入图片描述
作线。
在这里插入图片描述

8、绘制小技巧:

1、先将所有元件找到并放入图中,最后连线。
2、一开始可以不用写元件号,最后一步添加,步骤如下
选择工具----->选择标注----->选择原理图标注
在这里插入图片描述
可以快速一件更新
3、封装可以将所有图画好后进行封装。

9、编译执行:

9.1 run

选择需要编译的原理图,然后点击run
在这里插入图片描述

9.2编译成功

在这里插入图片描述

10、小总结:

总的来说AD绘制原理图比较费时间,STM32最小系统板的原理图网上资源很多,但是具体原理还需要深入研究,还有PCB的绘制,这个比较费眼睛,但是学习这个过程充满了乐趣,当你编译成功的那一刻,真正感受到了喜悦,但是对于原理图,我还得线下需要花一些更多的时间去学习研究具体原理。

  • 6
    点赞
  • 85
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值