STM32嵌入式系统设计
1.可视化的代码跟踪调试
一.在Ubuntu16.04下安装VScode
①在Ubuntu桌面找到软件中心,点击打开
②打开后,在软件中心的搜索栏输入Visual Studio Code,出现蓝色图标的那个就是,下载安装
③安装完成后,ctrl+alt+t打开命令行,输入code即可打开刚才安装的VScode,接下来安装C/C++插件
④ctrl+p打开VScode的名两行,在上面输入ext install cpptools,或在也可以只输入ext install然后按空格,下载安装C/C++
二.配置调试和编译文件
首先我们在安装好了插件之后,就可以在vscode打开我们的源码文件了并且调试了,不过要注意vscode要调试的话只能打开包含源码文件的文件夹,不能打开单个文件调试。
(我在test4文件夹下创建了上次作业的c文件。)
打开VScode,打开我们文件地址,运行和调试程序,环境选择C++
调试完成后,会自动生成一个launch.json文件,
点击VScode的终端,配置任务,又会出现一个tasks.json文件
我们接下来将两个文件的代码替换
lunch.json
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/${fileBasenameNoExtension}.out",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"preLaunchTask": "build",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
tasks.json
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "build",
"type": "shell",
"command": "g++",
"args": ["-g", "${file}", "-std=c++11", "-o", "${fileBasenameNoExtension}.out"]
}
]
}
ctrl+shift+b进行编译,再点击绿色箭头运行即可。
运行结果
Proteus仿真运行stm32程序
一.创建工程
打开proteus创建一个新的项目,文件名字和存放地址自己选择
点击NEXT,选择第二项
选择不创建PCB布版设计
选择创建固件项目,其中:系列选择Cortex-M3,Controller选择STM32F103R6,点击下一步,然后创建成功
二、配置实验所需原件
1.创建项目完成后就如下图所示,显示出自己所选的型号,STM32F103R6,系统并以配置好电源。
2.添加实验所需灯,点击左边P,然后进入下图,在关键字中输入LED-YELLOW,并点击确认选中。
3.添加实验所需电阻,点击左边P,然后进入下图,在关键字中输入RES,并点击确认选中。
4.将灯和电阻分别添加到原理图,然后右键电阻,编辑电阻,设置其阻值为50(默认阻值过大,不更换led电流达不到,亮不起来)。
三、进入keil 5中选择Option for Target,然后勾选Create HEX file,生成hex文件。
打开keil创建一个新的项目,选择好自己想要的芯片,创建
勾选匹配
创建源文件,代码如下
#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;
}
}
}
一定要生成hex文件,放在自己知道的地方
四、配置芯片
1.双击stm32f103r6芯片,然后进入Program File 选择刚才生成的hex文件,并配置Crystal Frequency改成8M(设置晶振为8M)。
点击确定,左下角三角形运行
实验结果
三. 学习使用Altium Designer软件绘制一个stm32最小系统的电路原理图、PCB图。
实验结果还在慢慢完成中…
参考:https://blog.csdn.net/weixin_46136508/article/details/105846011?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.add_param_isCf&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.add_param_isCf