嵌入式学习⑤——STM32嵌入式应用系统设计

发布者:EnchantedWish最新更新时间:2022-05-10 来源: eefocus关键字:嵌入式学习  STM32  应用系统 手机看文章 扫描二维码
随时随地手机看文章

前言

这次嵌入式学习的主要内容为可视化的代码跟踪调试、简单的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常用快捷键

image.png

关键字:嵌入式学习  STM32  应用系统 引用地址:嵌入式学习⑤——STM32嵌入式应用系统设计

上一篇:STM32的USART窗口通讯程序
下一篇:Proteus仿真实验之STM32流水灯

小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved