利用Proteus和keil5仿真运行stm32程序
日期: 2020-11-07 分类: 跨站数据测试 420次阅读
Proteus仿真运行stm32程序
一、创建工程
注:此处使用的版本为proteus8.9,该版本自带stm32库,较为方便。打开软件时一定要右键选择用管理员身份打开,否则可能出现找不到器件库的问题。
1.1打开peoteus8.9点击创建新工程,输入工程名、安装路径。
1.2 选择从选中的模板中创建原理图(DEFAULT)、选择不创建PCB布版设计。
1.3.选择创建固件项目,其中:系列选择Cortex-M3,Controller选择STM32F103R6,点击下一步,然后创建成功。
二、配置实验所需原件
2.1 完成创建如图所示
2.2 添加实验所需要的元器件
2.3 连线,画出仿真电路图
三、准备工作
3.1 新建project文件夹,并在里面新建三个文件夹,CMSIS(存放内核函数及启动引导文件),FWLIB(存放库函数),USER(存放用户自己的函数)。
3.2 在CMSIS中存放如下文件
3.3 在FWLIB中存放如下文件
3.4 在USER中存放如下文件
四、keil配置
4.1打开keil5,创建新工程led(注意需保存在刚刚创建的project文件夹里)
4.2选择图示图标
4.3把Tegat1改成test,并进行如图所示配置。
4.4点击如图所示标志
4.5 进入C/C++设置界面,在define一栏输入 STM32F10X_HD,USE_STDPERIPH_DRIVER ,并在includepath栏加入头文件路径。
4.6 在output中一定要选择生成hex文件选项。
五、keil中编写并编译代码
5.1 新建空白文本,并写入代码
代码如下:
#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<16;i++)
{
if(i%2==0)
{
delay_ms(99000);
GPIOC->BRR=0x000000f0;
delay_ms(99000);
GPIOC->BSRR=0x000000f0;
}
else
{
delay_ms(99000);
GPIOC->BRR=0x0000000f;
delay_ms(99000);
GPIOC->BSRR=0x0000000f;
}
}
//八个灯循环亮
for(i=0;i<8;i++)
{
delay_ms(99000);
GPIOC->BRR=0x000000ff;
delay_ms(99000);
GPIOC->BSRR=0x000000ff;
delay_ms(99000);
GPIOC->BRR=0x000000ff;
delay_ms(99000);
GPIOC->BSRR=0x000000ff;
}
}
}
5.2 把该文件加入到工程中
5.3编译
5.4 可以看到生成了hex文件
六、在proteus中运行
6.1 双击芯片,将刚刚生成的hex文件添加到芯片中
6.2 运行仿真,可以看到结果和预期一致。
七、参考资料
精华推荐