STM32程序设计以及原理图绘制
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的绘制,这个比较费眼睛,但是学习这个过程充满了乐趣,当你编译成功的那一刻,真正感受到了喜悦,但是对于原理图,我还得线下需要花一些更多的时间去学习研究具体原理。