前言
这次嵌入式学习的主要内容为可视化的代码跟踪调试、简单的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常用快捷键
上一篇:STM32的USART窗口通讯程序
下一篇:Proteus仿真实验之STM32流水灯
推荐阅读最新更新时间:2024-11-05 15:55
设计资源 培训 开发板 精华推荐
- SPIRIT1-低数据速率收发器-868 MHz-子板
- LT3470HDDB 1.8V 降压转换器的典型应用电路
- 使用 ON Semiconductor 的 KA7824AE 的参考设计
- AN-EVAL3A1065ELJ、15W、5V SMPS 评估板,基于 CoolSET F3 ICE3A1065ELJ
- ADZS-BFAV-EZEXT、ADSP-BF533/ADSP-BF537/ADSP-BF561 Blackfin A-V EZ-Extender 子板,用于基于 Blackfin 数字信号处理器 (DSP) 的 EZ-KIT Lite 评估系统
- 使用 Analog Devices 的 LT1109CS8 的参考设计
- 贰贰-雪花
- DER-360 - 用于PAR20灯的7.5W非隔离式 Tapped-Buck,TRIAC可调光LED驱动器
- AM6TW-2424SZ 24V 6 瓦单路输出 DC/DC 转换器的典型应用
- LTC4278 演示板,具有 12V 辅助电压的 IEEE802.3at PD 控制器,Vout = 5V,Iout = 4.5A