STM32嵌入式应用系统设计
一、练习使用跨平台多类型代码编辑器VScode
1.安装VScode
• 方法一
直接在ubuntu商店下载安装:点击ubuntu商店->搜索visual studio code即可安装。
• 方法二
从vscode官网下载最新版本,deb包下载地址:https://code.visualstudio.com/docs?dv=linux64
使用wget 下载地址 进行下载
参考: 博主
2.配置VScode
• 安装C/C++插件
在VScode里的左边拓展(ctrl+shift+X)处搜索C/C++并安装。
注:建议安装Chinese Lauguage 插件(如图中所示),使软件显示为简体中文。
• 配置VScode的调试C/C++文件launch.json
在安装好了插件之后,就可以在vscode打开我们的源码文件了并且调试了,不过要注意vscode要调试的话只能打开包含源码文件的文件夹,不能打开单个文件调试。(我新建一个VScodetst文件)
在VScode中打开该文件,并新建一个test的文件夹,并在文件夹创建一个test1.c文件并编写代码:
• 首先点击运行->启动调试选择环境为C/C++(GDB/LLDB)。
• 然后选择配置选择gcc-生成和调试文件。
• 出现报错
表示生成的执行文件不在创建的test文件夹中。
这里修改方法是将在tasks.json中的type类型由cppbuild改为shell。原因是cppbuild是将生成文件放入根目录,而shell是将生成文件放入当前目录下。
再次调试.c程序:
可得到结果:hello world!
• 在launch.json中的externalConsole属性改为true可将终端显示在外部窗口。结果如下:
• 修改的laungch.json文件如下:
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "gcc - 生成和调试活动文件",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,//改为true将终端显示在外部窗口
"MIMode": "gdb",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "C/C++: gcc build active file",
"miDebuggerPath": "/usr/bin/gdb"
}
]
}
• tasks.json文件如下:
{
"tasks": [
{
"type": "shell",
"label": "C/C++: gcc build active file",
"command": "/usr/bin/gcc",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
"options": {
"cwd": "/usr/bin"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "Generated task by Debugger"
}
],
"version": "2.0.0"
}
• == 在上面的创建文件夹中如果将创建的.c文件直接放入最开始创建的VScodetest文件夹下就不需要修改tasks.json中的type类型。==
二、 Proteus仿真运行stm32程序
1.proteus绘制仿真图
1.创建文件
• 点击新建工程,修改和路径名称
• 选择如下:
• 之后可以选择没有固定项目图一(我选择的是有固定项目)如果版本为8.9可以选择创建固定项目如图二
图一:
图二:
• 选择型号STM32F103R6配置好电源
• 添加实验所需灯,点击左边P,然后进入下图,在关键字中输入LED-YELLOW,并点击确认选中
• 添加实验所需电阻,点击左边P,然后进入下图,在关键字中输入RES,并点击确认选中。
• 添加完成后绘制图如下:
注意将电阻改为50
2.进入keil 5软件编写程序
• 先创建项目
在这里选择STM32F103R6器件。
• 创建后右键点击source group1选择ADD new…创建编写c语言代码:
#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;
}
}
}
• 之后在目标选项中output里面勾选create hex file来创建hex文件。
之后编译构建完成。
3.进行仿真
• 进入Proteus进入之前创建的工程,双击STM32器件
在program file选择之前构建程序生成的hex文件,在Crystal Frequency栏设计晶振大小。
• 注如果出现如下报错:
• 解决方案:将VDDA 和VSSA增添到网络连接里。
• 之后运行仿真流水灯成功(随便截一张图如下):
• 八个全亮图:
三、Altium Designer软件绘制一个stm32最小系统的电路原理图
Altium Designer可自行在网上寻找下载。
此处供参考下载:Altium Designer19下载安装
1. 创建PCB原理图库
• 新建工程:点击文件->新的->项目->PCB工程
右键点击工程->保存工程
将工程保存到指定目录下。
• 新建元件库
• 绘制元件
• 在出现的白框里点击右键->放置->矩形
• 然后选择上方放置管脚(快捷键:p)
如图所示放置管脚成功:在管脚外侧有四个白点
放大缩小矩形快捷方式为CTRL加鼠标滑轮,旋转管脚快捷方式为左键放于管脚处点击空格一次旋转90度
• 放置管脚绘制完成后如图:
• 继续添加元器件如图(部分器材由如图左边部分):
2.绘制原理图
• 点击界面右上角设置系统参数->选择Data Management项的Installed Libraries->在安装选择从文件中安装。
• 选择界面中的放置器件,选择自己创建的元件库中选择器件放置即可
之后步骤可详细参考:该博主
• 放置好后需将元件命名:
点击工具->标注->原理图标注
• 放置好元件后如图:
三、总结
1.在通过前次作业中命令行工具gdb调试基础上,学会了练习利用VScode软件调试程序来进行程序代码的跟踪查错,提高工作效率。
2.在使用Proteus对STM32的仿真可以更加让我们对于理论代码与实践仿真的结合。
3.在使用Altium Designer画stm32最小系统,学会使用了AD软件以及绘制原理图的基础。此后还需更加大力练习。