一、Proteus中创建原理图
- 创建工程
①打开Proteus,选择新建工程
②进行工程名称填写,路径的选择
③选择从选中的模板中创建原理图,模板选择DEFAULT
④选择创建固件项目,系列选择Cortex-M3,Controller选择STM32103R6
⑤工程创建完成,点击完成
- 选择所需要的元件
创建工程完成后,图中就会显示出自己所选的型号的芯片,STM32F103R6,系统并以配置好电源
选择元件的方法
- 绘制原理图
将元件选中,画布中就可以绘制了。在画布上双击元件,可以对于元件的一些信息进行修改。
绘制完成的原理图
二、keil编写程序
- keil的配置
下载外设库
下载地址:https://github.com/2414466154/seven - 建立一个工程
新建的工程要与外设库的路径一致,工程名称可以随便填写,图中的红框的文件则是外设库文件
选择对应的芯片,根据Proteus原理图,芯片选择STM32103R6。接下来就是新添加两个组,将组的名称修改为外设库文件的名称。
添加文件
点击魔法棒,在弹出的界面中,点击C/C++,在Define中填写USE_STDPERIPH_DRIVER
接下来,点击Include Path,在弹出的界面中进行路径的添加(路径添加尽量使用每行后面三点的标志按钮,进行路径选择,手动填写路径,可能不够准确)
接下来,点击魔法棒,查看Output是否勾选生成Hex文件
- 程序代码
#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<8;i++)
{
delay_ms(99000);
GPIOC->BRR=0x000000ff;
delay_ms(99000);
GPIOC->BSRR=0x000000ff;
}
}
}
运行结果:
三、Proteus仿真
- 配置芯片信息
原理图上双击芯片,在弹出的界面对信息进行修改或添加
- 仿真效果(每个灯依次闪烁一次,让所有灯一起闪烁8次)
四、总结
由于之前做过51芯片的流水灯仿真,使用Proteus画原理图的过程还是比较轻松。但是,在使用keil编写程序上还是存在一些问题。整个过程,主要出现问题的地方也是集中在keil上,特别时在对外设库添加上,并不是外设库所以内容都得添加进去。还有就是在路径添加上,开始自己采用手动填写,编译程序时,就一直报某些文件找不到的错误,在多次尝试后,才发现时路径填写有问题,在这里用了较久的时间。