keil5-MDK程序
STM32流水灯程序非常简单,在我的实验中使用GPIOC的引脚连接流水灯。主要程序如下:
LED初始化:led.h
#ifndef __LED_H
#define __LED_H
#include <stm32f10x.h>
void LED_Init(void); //初始化
#endif
led.c
#include "led.h"
//LED IO初始化
void LED_Init(void)
{
RCC->APB2ENR|=1<<4; //使能PORTC时钟
GPIOC->CRL&=0X00000000;//清零
GPIOC->CRL|=0X33333333;//推挽50MHz输出
GPIOC->ODR=0X00FF; //输出高
}
test.c文件,main主函数:
#include <stm32f10x.h>
#include "led.h"
void delay_ms(uint32_t ms)
{
uint32_t i_cnt,j_cnt;
for(i_cnt=0;i_cnt<454000;i_cnt++);
for(j_cnt=0;j_cnt<ms;j_cnt++);
}
int main(void)
{
int i;
// Stm32_Clock_Init(9);//系统时钟设置
LED_Init();//初始化与LED连接IO口
while(1)
{
for(i=0;i<8;i++)
{
GPIOC->ODR=~(1<<i);//输出低
delay_ms(500);
}
}
}
工程目录如下,记得包含头文件。工程链接在文末。
编译生成.hex文件即可,接下来绘制仿真电路。
Proteus仿真电路
打开Proteus
点击新建工程。
我将工程保存至 D:\仿真 文件夹中,可以给工程重命名,点击下一步。
从选中的模板中创建原理图,选择DEFAULT(默认),点击下一步。
不创建PCB布版设计,直接下一步。
如果创建固件项目并且安装了编译器,则可以在Proteus中直接给STM32F103R6芯片编写程序。
因为我已经用keil编好流水灯程序了,所以选择不创建固件项目,点击下一步。
确认信息,点击完成,即可建立空白项目。
添加STM32芯片,点击左上角设备选择器的“P”键。
在左上角“关键字”中输入:STM32。即可显示所有的仿真芯片,Proteus 8.9版本可以支持部分F4系列芯片的仿真。
右上为芯片原理图,右下为芯片PCB封装,我选择STM32F103R6芯片,双击芯片即可将芯片添加到设备选择器中。
同理,搜索关键字添加电阻(RES)和LED元件,最后点击右下角确认。
在元件列表中选择元件,再在原理图中左键单击即可选择元件位置,右键取消选择,再次单击鼠标左键放置元件。
总原理图如下:(不用连外部晶振电路,双击芯片弹出页面可以直接设置晶振频率)
电源VDD使用左侧终端中的POWER,芯片引脚连接使用DEFAULT。
放置元件,双击元件命名为VDD、PC0~7即可通过网络标号连接。
总原理图中没有给芯片供电的电源,因为仿真芯片有默认的电源引脚没有显示出来。
点击设计中的配置供电网。
弹出以下窗口,设置VCC/VDD电压为3.3,点击确定。
仿真电路就完成了,接下来下载程序即可实现仿真。
双击STM32芯片,弹出窗口。
点击Program File的文件夹图标,将之前keil编译生成的hex文件添加进来。并修改晶振频率Crystal Frequency为8MHz,点击确定。
点击左下角按钮开始仿真。
可以看到程序正常运行,LED逐个点亮。
最后保存所有工程文件,实验完毕。
使用发现延时时间并不准确,只能仿真出个大概,无法仿真太复杂的外设电路;而且仿真运行时很占CPU,可能就是这个原因导致仿真时间过慢。文章来源:https://www.toymoban.com/news/detail-440364.html
工程文件链接文章来源地址https://www.toymoban.com/news/detail-440364.html
到了这里,关于使用Proteus 8.9仿真STM32F103流水灯实验的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!