STM32 单片机 练习项目 LED灯闪烁LED流水灯蜂鸣器 未完待续

embedded/2025/1/7 15:28:52/

个人学习笔记

文件路径:程序源码\STM32Project-DAP&DAPmini\1-1 接线图

                        3-1LED闪烁图片

新建项目

新建项目文件

选择F103C8芯片

关闭弹出窗口

拷贝资料

在项目内新建3个文件夹

Start、Library、User

Start文件拷贝

从资料中拷贝文件

文件路径:固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm

全部复制到“Start”文件内

再复制stm32f10x.h、system_stm32f10x.c、system_stm32f10x.h三个文件到“Start”文件夹下

文件路径:固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x

复制core_cm3.c、core_cm3.h到“Start”文件夹下

文件路径:固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport

Library文件拷贝

全部复制到Library文件夹内

文件路径:固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\src

全部复制到Library文件夹内

文件路径:固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\inc

Library文件复制完毕

User文件拷贝

复制main.c、stm32f10x_conf.h、stm32f10x_it.c、stm32f10x_it.h三个文件到“User”文件夹内

文件路径:固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template

项目配置

把默认组叉掉,新建3个组:Start、Library、User

选中Start,添加.c、.h结尾的文件、startup_stm32f10x_md.s文件

把Library文件夹内的文件全部添加到组里

把User文件夹内的文件全部添加到User组里

添加文件夹到文件路径,在Define输入:USE_STDPERIPH_DRIVER

Debug——Use选择:

根据接口选择ST-Link Debuger或者CMSIS-DAP Debuger

点击Settings——Flash Download——勾选Reset and Run

编写代码测试

点main.c文件,清空里面内容,添加头文件

添加主函数main

#include "stm32f10x.h"                  // Device headerint main(void)
{while(1){}
}

编译测试

出现多个禁告

查到报错原因是版本号应选择5

修改后运行正常

点击下载测试也没有报错

批处理工具

keilkill.bat:复制到项目文件中

作用:把工程编译产生的中间文件删除

 文件路径:程序源码\STM32Project-DAP&DAPmini\1-2 keilkill批处理

此时项目工程有20多MB,其中占用空的是Listings、Objects两个文件夹,其中都是工程的中间文件

双击“keilkill.bat”文件,会将中间文件删除,Listings、Objects两个文件夹被清空,此时项目只有2MB

点亮LED

操作STM32的GPIO有3个步骤,涉及RCC和GPIO两个外设

1、使用RCC开启GPIO时钟

2、使用GPIO_Init函数初始化GPIO

3、使用输出或者输入的函数控制GPIO口

在Library文件中:stm32f10x_rcc.c、stm32f10x_gpio.c

开启时钟

复制RCC中的RCC_APB2Periph_GPIOA到main函数中

取RCC.h中的时钟控制函数:RCC_APB2PeriphClockCmd到main函数中,右键跳转到定义

报错是因为删除了中间文件,重新点击build,即可正常跳转

因为点亮PA0口LED,

第一个参数:选择RCC.c文件中间的“RCC_APB2Periph_GPIOA”

第二个参数:ENABLE

时钟开启:

#include "stm32f10x.h"                  // Device headerint main(void)
{RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);while(1){}
}

取gpio.h中的GPIO_Init函数复制到main函数中,右键跳转定义

第一个参数:GPIOx(x改为A)

第二个参数:是一个结构,GPIO_InitTypeDef

GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.GPIO_Mode = ;
GPIO_InitStruct.GPIO_Pin = ;
GPIO_InitStruct.GPIO_Speed = ;

先生成空结构体,再右键跳转查看函数说明,复制参数

选择“GPIOMode_TypeDef”,ctrl + F搜索

看到GPIO的8种工作模式

typedef enum
{ GPIO_Mode_AIN = 0x0, // 模拟输入GPIO_Mode_IN_FLOATING = 0x04, // 浮空输入GPIO_Mode_IPD = 0x28, // 下拉输入GPIO_Mode_IPU = 0x48, //上拉输入GPIO_Mode_Out_OD = 0x14, // 开漏输出GPIO_Mode_Out_PP = 0x10, // 推挽输出GPIO_Mode_AF_OD = 0x1C, // 复用开漏GPIO_Mode_AF_PP = 0x18 // 复用推挽
}GPIOMode_TypeDef;

无完待续

参考资料:

[3-2] LED闪烁&LED流水灯&蜂鸣器_哔哩哔哩_bilibili


http://www.ppmy.cn/embedded/151668.html

相关文章

centos7yum安装mysql5.7

1、安装mysql5.7 (1) 正常安装 [rootBrianZhu /]# wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm [rootBrianZhu /]# yum -y install mysql57-community-release-el7-10.noarch.rpm [rootBrianZhu /]# yum -y install mysql-community-se…

springboot加载META-INF下SPI扩展类

在 Spring Boot 中加载 META-INF/services 下的 SPI(Service Provider Interface) 是一种常见的扩展机制。SPI 是 Java 提供的一种服务发现机制,允许开发者通过配置文件动态加载实现类。Spring Boot 可以结合 SPI 机制实现插件化扩展。 以下…

Ubuntu网络连接问题(笔记本更换wifi后,虚拟机连不上网络)

1、笔记本更换wifi后,虚拟机的IP地址变了,然后就连不上网络了(主机笔记本连接wifi正常上网) 2、修改子网地址(按照ubutun的ip设置子网掩码) 3、Ubuntu已经显示网络连接正常了,但是就是无法上网&…

HTML——77.网页编码及乱码处理

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>网页编码及乱码处理</title></head><body><!--网页编码&#xff1a;指网页中特定的字符编码&#xff0c;通过解析编码成为我们知道的文字--><!-…

可编辑31页PPT | 大数据湖仓一体解决方案

荐言分享&#xff1a;在当今数字化时代&#xff0c;大数据已成为企业决策和业务优化的关键驱动力。然而&#xff0c;传统的数据处理架构&#xff0c;如数据仓库和数据湖&#xff0c;各自存在局限性&#xff0c;难以满足企业对数据高效存储、灵活处理及实时分析的综合需求。因此…

Cocos2dx Lua绑定生成中间文件时参数类型与源码类型不匹配

这两天维护的一个项目&#xff0c;使用arm64-v8a指令集编译时遇到了报错&#xff0c;提示类型不匹配&#xff0c;具体报错的代码【脚本根据C源文件生成的中间文件】如下&#xff1a; const google::protobuf::RepeatedField<unsigned long long>& ret cobj->equi…

Elasticsearch 创建索引 Mapping映射属性 索引库操作 增删改查

Mapping Type映射属性 mapping是对索引库中文档的约束&#xff0c;有以下类型。 text&#xff1a;用于分析和全文搜索&#xff0c;通常适用于长文本字段。keyword&#xff1a;用于精确匹配&#xff0c;不会进行分析&#xff0c;适用于标签、ID 等精确匹配场景。integer、long…

【开源监控工具】Uptime Kuma:几分钟设置实时监控你的网站性能

文章目录 前言1.关于Uptime Kuma2.安装Docker3.本地部署Uptime Kuma4.使用Uptime Kuma5.cpolar内网穿透工具安装6.创建远程连接公网地址7.固定Uptime Kuma公网地址 前言 大家好&#xff01;如果你是网站运维人员或者管理着多个站点&#xff0c;那么今天我要介绍的一款工具绝对…