从头开始完成一个STM32例程
创始人
2025-05-29 05:50:39
0

创建新项目

Project-> New,之后选择自己的开发板芯片
在这里插入图片描述
确定之后又跳到运行环境的界面:

必选CMSIS的Core还有Device的Startup。

如果要连接外设必须勾选外设的时钟RCC,一般再勾选上Framework、GPIO、和USART串口
在这里插入图片描述
点击OK确定创建项目。项目创建完成后就是这样的:
在这里插入图片描述
可以看到已经包含了我们选择的库文件。如果还需要什么可以再点击图上的按钮再次打开运行环境配置页面。这个环境配置就是添加库函数用的。
在这里插入图片描述

之后可以右键点击左侧的资源管理器,管理一下项目目录,比如自定义名字。
在这里插入图片描述
在这里插入图片描述
添加main.c文件:
在这里插入图片描述
在main函数中写代码
如流水灯实验
main.c

# include "stm32f10x.h"
# include "led.h"int main()
{uint32_t i; LED_Init(); //初始化LEDLED2_ON;LED3_OFF;for(i=0; i<0xffffff; i++); //for循环不精确延时while(1){for(i=0; i<0xfffff; i++); //for循环不精确延时LED2_REV;//LED2取反LED3_REV;//LED3取反}
}

附属的文件可以放入一个新建文件夹中
led.h

#ifndef __LED_H
#define __LED_H#include "stm32f10x.h"#define LED2_OFF GPIO_SetBits(GPIOE,GPIO_Pin_5)
#define LED2_ON GPIO_ResetBits(GPIOE,GPIO_Pin_5)
#define LED2_REV GPIO_WriteBit(GPIOE, GPIO_Pin_5,(BitAction)(1-(GPIO_ReadOutputDataBit(GPIOE, GPIO_Pin_5))))#define LED3_OFF GPIO_SetBits(GPIOB,GPIO_Pin_5)
#define LED3_ON GPIO_ResetBits(GPIOB,GPIO_Pin_5)
#define LED3_REV GPIO_WriteBit(GPIOB, GPIO_Pin_5,(BitAction)(1-(GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_5))))void LED_Init(void);#endif

led.c

#include "led.h"void LED_Init(void)
{GPIO_InitTypeDef GPIO_InitStructure;  // 定义结构体变量//打开PB口时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);//打开PE口时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE);//PB5,PE5引脚设置GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;//端口速度GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//端口模式,此为输出推挽模式GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//初始化对应的端口GPIO_Init(GPIOB, &GPIO_InitStructure);GPIO_Init(GPIOE, &GPIO_InitStructure);
}

结构目录如图:
在这里插入图片描述

.h文件默认是不显示的。编译通过后,在左侧的.C文件上会出现一个“+”号,点开就是该C文件使用到的h文件。

编译:
默认是不会创建Hex文件的,所以还需要进入设置里面去设置一下
点击魔法棒
在这里插入图片描述
在这里插入图片描述

烧写程序

USB转串口烧写

上电前,设置BOOT0=1,BOOT1=0。或者是在上电后,设置BOOT0=1,BOOT1=0之后,然后按一下复位按键。这两种方式都可以让设置为系统存储启动模式,从而通过串口下载程序。
选择COM号
确保启动模式已经设置为串口下载模式,BOOT1=0,BOOT0=1,即S1=ON,S2=OFF,然后把开发板连接电脑上电,打开软件,选择PORT菜单下对应的COM口。
在这里插入图片描述
在这里插入图片描述
DAP仿真
https://blog.csdn.net/weixin_45011280/article/details/115308768
设置好之后直接点load就可以写入,但是需要插上电源才可以显示程序的效果

相关内容

热门资讯

内核实验(八):实现O-NON... 一、篇头 继续使用qemu调试内核的实验。本章复习阻塞与非阻塞IO的概念和机制,然后对...
门店运营计划书 门店运营计划书(通用8篇)  光阴迅速,一眨眼就过去了,又迎来了一个全新的起点,此时此刻我们需要开始...
JavaWeb——Idea模板... Idea模板创建Servlet 第一步  第二步  第三步  此处的Servlet模板也可以定...
综合实践活动方案 综合实践活动方案(通用23篇)  为了确保工作或事情有序地进行,往往需要预先制定好方案,方案是从目的...
青少年体能训练计划方案 青少年体能训练计划方案  青少年体能训练计划方案(通用10篇)  为有力保证事情或工作开展的水平质量...
全国爱牙日活动方案   2014年9月20日是我国第二十四个全国“爱牙日”,为发挥家庭的优势和作用,提高家庭成员口腔保健...
第5讲 cameraserve... 本讲是Android Camera Native Framework专题的第5讲,我们...
11-STM32F1 -DMA... 11-STM32F1 -DMA(1) DMA:Data Memory A...
促销活动方案 实用的促销活动方案集锦9篇  为了确保工作或事情有序地进行,常常需要预先制定方案,方案是书面计划,是...
清明节主题党日活动方案 清明节主题党日活动方案(通用7篇)  为了确保活动有序有效开展,我们需要事先制定活动方案,活动方案是...
施工现场扬尘专项防治方案 施工现场扬尘专项防治方案  什么是方案  方案是从目的、要求、方式、方法、进度等都部署具体、周密,并...
家电促销活动方案 家电促销活动方案通用15篇  为保证事情或工作高起点、高质量、高水平开展,往往需要预先进行方案制定工...
考研408每周一题(2019 ... 2019年(单链表)         41.(13分)设线性表L=(a1,a2...
【C#进阶】C# 索引器 序号系列文章13【C#进阶】C# 特性14【C#进阶】C# 反射15【C#进阶】C# 属性文章目录前...
社区志愿者活动方案 社区志愿者活动方案模板(精选9篇)  为了确保活动有序地进行,往往需要预先制定好活动方案,活动方案是...
双十一促销活动方案 双十一促销活动方案(精选12篇)  为了确保活动能有条不紊地开展,常常要根据具体情况预先制定活动方案...
最新促销活动方案 最新促销活动方案  一、活动方案的格式  1.活动标题  2.活动时间、地点  3.活动的目的及意义...
微公益策划活动方案 微公益策划活动方案  为了确保工作或事情有序地进行,常常要根据具体情况预先制定方案,一份好的方案一定...
浏览器F12功能总结 不同浏览器F12控制面板的中英文显示360浏览器:英文IE浏览器:中文搜狗:英文谷歌浏览器:英文火狐...
数据结构 | 栈的中缀表达式求... 目录 什么是栈? 栈的基本操作 入栈操作 出栈操作 取栈顶元素 中缀表达式求值 实现思...