前言
这次嵌入式学习的主要内容为可视化的代码跟踪调试、简单的hex文件编译并在Proteus上仿真运行、最后使用Altium Designer 进行原理图和PCB图的设计,都是我们学习STM32的工具。
一、基于跨平台多类型代码编辑器VScode
1.VScode的安装
从vscode官网下载最新版本,deb包下载地址:https://code.visualstudio.com/docs?dv=linux64
使用wget 下载地址 进行下载
安装:dpkg -i 安装包
安装成功后,执行code命令打开sacccaas界面
安装过程中由于安装包依赖关系而报错,解决方案如下:
deb安装出现依赖问题可以执行apt --fix-broken install ,用来自动修复安装出现broken的package
重新sudo dpkg -i 安装包重新安装
2.Ubuntu中用vscode编译调试CC++
安装vscode的CC++插件
在vscode中安装C++的插件,按ctrl+p调出命令行,在上面输入ext install cpptools或在也可以只输入ext install然后按空格
配置launch.json和task.json这两个文件
我们在安装好了插件之后,就可以在VScode打开源码文件,并进行调试
首先进行launch.json的调试
注意: VScode要调试的话只能打开包含源码文件的文件夹,不能打开单个文件调试
删除program项前面的部分,只留下"program":"${workspaceRoot}/a.out"花括号里面的workspaceFolder,就是你打开调试的文件夹的目录,也叫做工作目录。其他的就不需要修改了。
配置task.json来进行编译的配置
按ctrl+p打开命令面板,然后输入>task后选择配置任务运行程序
我们只需要把这几项改成
{
"version": "0.1.0",
"command": "g++",
"isShellCommand": true,
"args": ["-g","${workspaceRoot}/你的源码文件名.cpp"],
"showOutput": "always"
}
其实真正修改的也就只有command项和args项,command就是调用的控制台命令(就是我们平常用控制台编译时输入的命令),然后args就是命令行参数了,-g参数是必须的,否则到时候没有调试信息,vscode会无法设置断点。
编译调试C++程序
可以看见编译成功输出Hello World!
二、Proteus仿真——STM32流水灯
1.创建工程
1.点击创建新工程,输入工程名、安装路径。
2.选择从选中的模板中创建原理图(DEFAULT)
3.选择不创建PCB布版设计
4.选择创建固件项目,其中:系列选择Cortex-M3,Controller选择STM32F103R6,点击下一步,然后创建成功
2.配置实验所需元件
1.创建项目完成后就如下图所示,显示出自己所选的型号,STM32F103R6,系统并以配置好电源,连接电路如下,我们选用C0-C7端口,总共8个,如下图所示:
3.进入keil 5中生成hex文件
2.程序代码如下(程序实现要求:8个led灯依次闪烁,然后8个灯同时闪烁8次,依次重复)
/*main.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 } 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< delay_ms(99000); GPIOC->BSRR=(1< } for(i=0;i<8;i++) { delay_ms(99000); GPIOC->BRR=0x000000ff; delay_ms(99000); GPIOC->BSRR=0x000000ff; } } } 4.STM32的配置 1.双击stm32f103r6芯片,然后进入Program File 选择刚才生成的hex文件,并配置Crystal Frequency改成8M(设置晶振为8M) 5.实验结果 GIF演示如下: 三、Altium Designer的使用 1.创建工程 在 DXP 主页面下 用鼠标左键点击 文件新的工程PCB 工程,左边的工程 资源管理器中就出现了一个名为 PCB_Project1.PrjPCB 的 PCB 工程, 现在可以左键点击 文件保存工程 来改变项目的保存路径和项目名称。 在项目名称上右键点击,在引处的菜单中选择添加新的工程Schematic,这样,在当前的工程当中添加了一个新的原理图文件 Sheet.schDoc, 原理图文件上右键点击,在引处的菜单中选 择 Save as 来改变原理图名称和保存路径。 到这一步,我们已经在一个 PCB 工程中添加了一张空白的原理图了。 2.绘制原理图 1) 添加库文件 在原理图的下方偏右的边框上,左键点击 SystemLibraries,打开库文件,在库文件的面板里左键点击 Libraries 可以对当前使用的库文件进行添加,移出和排序。 2) 绘制原理图 接下来, 要从元器件库中拖出我们需要的元器件, 用线把它们连起来, 完成原理图设计。 从元器件库选中需要的元器件,拖出我们需要的元器件,左键点击 PlaceBus 和 PlaecWire ,用线或总线把它们连起来,并且给所有的元器件加上相应的标号( Designator) , 保存完成原理图设计。 要注意的是,如果你还要进行 PCB 设计,你选的器件就必须要有相应的 Footprint封装。 如果你还要进行功能仿真,你选的器件就必须要有相应的 Simulation 模型文件。 如果你还要进行信号完整性分析,你选的器件就必须要有相应的 Signal integrity 模型文件。 3) 编译原理图 完成原理图设计后,左键点击原理图名称,在引出的菜单中左键点击 Compile Document xxx.SCHDOC ,(xxx 是用户自己定义的文件名),对这个原理图文件进行编译,如果有错误信息就会自动启动消息窗口( Message),来提示用户有什么样的错误。经检查没有错误后,保存原理图。 示例原理图如下: 总结 通过这次练习,我对STM32的认识又进了一步。STM32在C51的基础上进行了完善,学习过C51的朋友们在接触STM32时可能会感到容易上手。有条件的朋友们可以买一块STM32板,写一些简单的hex文件(如流水灯)进行烧录,观察学习。对嵌入式系统也能有一个更清楚的认识。 附录 Altium Designer常用快捷键
设计资源 培训 开发板 精华推荐
- RT809H编程器的ISP小板
- 使用 ROHM Semiconductor 的 BAJ0BC0WFP-E2 的参考设计
- LT1172HVCT、1.25A 背光 CCFL 电源的典型应用
- SECO-1KW-MDK-GEVK:1kW 600V 工业电机开发套件 (MDK),带有紧凑型智能功率模块 (IPM) 板和通用控制器板 (UCB)
- LT1634CCZ-5 超准确 ±4.096V 输出电压基准的典型应用
- LTC1624 的典型应用 - 高效率 SO-8 N 沟道开关稳压控制器
- MA330016、dsPIC33FJ32GP204插件模块(PIM)演示板
- 使用 Analog Devices 的 LTC2908CDDB-C1 的参考设计
- XL4016
- 来自多个输入源的 LTC3622IDE-23/5 双路输出降压型稳压器的典型应用电路