从头开始完成一个STM32例程

创建新项目

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

必选CMSIS的Core还有Device的Startup。
CMSIS是“ARM Cortex 微控制器软件接口标准”,使得不同公司生产的Cortex-M3芯片能在软件上基本兼容。CMSIS 层在整个系统中 是处于中间层,向下负责与内核和各个外设 直 接打交道,向上提供实时操作系统用户程序调 用的函数接口。如果没有 CMSIS 标准,那么各个芯片公司就会设计自己喜欢的风格的库函数,而 CMSIS 标准就是要强制规定,芯片生产公司设计的库函数必须按照 CMSIS 这套规范来设计。就是会统一规定一些库函数的名字以及对应的功能。
CMSIS分为 3 个基本功能层:
1)核内外设访问层: ARM 公司提供的访问,定义处理器内部寄存器地址以及功能函数。
2)中间件访问层 定义访问中间件的通用 API, 也是 ARM 公司提供。
3)外设访问层:定义硬件寄存器的地址以及外设的访问函数。

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

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

# include "stm32f10x.h"
# include "led.h"

int main()
{
    uint32_t i; 
    LED_Init(); //初始化LED

    LED2_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就可以写入,但是需要插上电源才可以显示程序的效果

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32例程AD是指用于STM32微控制器的模拟-数字转换(Analog-to-Digital Conversion)的示例代码。 STM32微控制器是一款广泛应用于嵌入式系统的ARM Cortex-M系列微控制器。其具有丰富的外设接口和强大的处理能力,适用于各种应用领域。 在嵌入式系统中,模拟-数字转换是将模拟信号转换为数字信号的重要过程。这样可以实现对传感器等模拟信号的处理和分析。 STM32例程AD提供了一套示例代码,旨在帮助开发者快速上手并理解STM32微控制器的AD功能。这些例程包含了AD的基本配置和使用方法。 示例代码通常包括以下内容: 1. 初始化AD模块:设置ADC时钟、采样时间等参数,选择ADC通道等。 2. 启动AD转换:发送转换请求,开始对模拟信号进行采样和转换。 3. 获取AD转换结果:等待AD转换完成,并获取转换后的数字值。 4. 数据处理:根据应用需求,对AD转换结果进行处理,例如显示、存储或进一步处理。 使用STM32例程AD的优势有: 1. 快速上手:通过查看和理解示例代码,可以迅速了解STM32微控制器的AD功能的基本原理和使用方法。 2. 简化开发:可以直接基于示例代码进行修改和调整,加快开发过程。 3. 提高可靠性:示例代码经过精心设计和测试,可以提供较高的可靠性和稳定性。 总之,STM32例程AD为开发者提供了一个学习和使用STM32微控制器AD功能的参考,可以在嵌入式系统开发中起到很大的帮助作用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值