当前位置: 首页 > news >正文

STM32新建工程-基于库函数

目录

一、创建一个新工程

二、为工程添加文件和路径

三、创建一个main.c文件,并调试

四、修改一些配置

五、用库函数进行写程序

1、首先加入一些库函数和头文件

2、编写库函数程序


一、创建一个新工程

我这里选择STM32F103C8的型号,然后点击OK。

keil5里面的小助手,暂时不用,叉掉

二、为工程添加文件和路径

在工程模板中还需要添加启动文件、系统头文件、系统时钟文件,创建一个文件夹start,将下面文件都添加里面如下:

由于这个内核的寄存器描述和外围设备的描述文件不是在一起的,所以还需要添加一个内核寄存器的描述文件

然后进入工程中,进行添加文件,将启动文件后缀为md.s加入里面,然后再将剩下的.c和.h文件都加入里面。

对于启动文件补充,如下图,先根据型号进行选择,再根据Flash容量选择对应后缀名的启动文件。如我是使用的是STM32F103C8T6,Flash是64k,所以选择后缀名为md.s的文件。

然后添加系统头文件的路径,点击魔法棒——>C/C++(AC6)——>Include Paths,然后点击右侧小红框。

先点击最左侧的小红框,再选择最右侧的小红框添加头文件的路径,然后点击OK。

三、创建一个main.c文件,并调试

创建main.c 文件,写入下面的代码,会发现头文件会报错,就很纳闷,怎么会有错误呢?

经过查阅资料,进行如下操作,点击魔法棒——>Target——>ARM Compile——>Use default complier version 5,把编译器版本6换成版本5,就解决了。

四、修改一些配置

然后修改一下配置,点击扳手,将编码格式修改为UTF -8,防止中文乱码。如果查看别人写的代码,出现乱码了,还是要修改的。然后点击Ok。

然后选择调试器,这里我用的是STLINK,点击魔术棒——>Debug——>Use,如下:

然后点击Use后的settings,点击Flash Download,把Reset and Run勾上,勾上这一项之后,我们下载程序后立马复位并执行(我的这个芯片不行,需要复位一下),这样方便一些。 

五、用库函数进行写程序

1、首先加入一些库函数和头文件

创建一个文件,名称为Library,特此说一下,需要在Include Path内声明所有包含头文件的文件夹,把下文面的文件全部添加在里面。

库函数.c文件

库函数.h,也就是头文件

还必须添加配置文件conf.h和中断文件it.c和it.h,如下;

如果让conf.h文件有效,还需设置,如下:

USE_STDPERIPH_DRIVER 进行定义,如下:魔法棒——>C/C++——>Define,然后点击Ok。

2、编写库函数程序

点亮PC13口的LED灯。程序如下:

#include  "stm32f10x.h"                  // Device headerint main(void)
{GPIO_InitTypeDef GPIO_InitStruct;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;    //推挽输出GPIO_InitStruct.GPIO_Pin=GPIO_Pin_13 ;         //PC13口GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;   //50HZGPIO_Init(GPIOC,&GPIO_InitStruct);GPIO_SetBits(GPIOC,GPIO_Pin_13);              //设置为高电平,熄灭GPIO_ResetBits(GPIOC,GPIO_Pin_13);            //设置为低电平,点亮while(1) {}}

相关文章:

STM32新建工程-基于库函数

目录 一、创建一个新工程 二、为工程添加文件和路径 三、创建一个main.c文件,并调试 四、修改一些配置 五、用库函数进行写程序 1、首先加入一些库函数和头文件 2、编写库函数程序 一、创建一个新工程 我这里选择STM32F103C8的型号,然后点击OK。 …...

matlab入门学习(二)矩阵、字符串、基本语句、函数

一、矩阵 1、矩阵生成 %矩阵生成%直接法 A[1,2,3; 4,5,6; 7,8,9]%冒号一维矩阵:开始,步长,结束(步长为1时可以省略) B1:1:10 B1:10 %函数法%linspace(开始,结束,元素个数),等差生成…...

PC端微信小程序如何调试?

向往常一样运行开微信小程序开发者工具 如果只弹出pc端小程序,没有出现调试的界面:点击胶囊按钮的三个…选择重新进入小程序 即可依次展开相应的功能调试,改完代码没反应再刷新看看,再没反应就再次重新点击编译并自动调试。...

点击按钮提示气泡信息(Toast)

演示效果&#xff1a; 目录结构&#xff1a; activity_main.xml(布局文件)代码&#xff1a; <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"http:…...

【易社保-注册安全分析报告】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 1. 暴力破解密码&#xff0c;造成用户信息泄露 2. 短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉 3. 带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造…...

155. 最小栈

思路 按栈的特点&#xff1a;顶部即列表尾部 class MinStack(object):def __init__(self):self.stack[]def push(self, val):""":type val: int:rtype: None"""self.stack.append(val)def pop(self):""":rtype: None"&quo…...

用Manim实现高尔顿板(Galton Board)

高尔顿板的介绍 高尔顿板&#xff08;Galton Board&#xff09;&#xff0c;有时也称为贝尔图&#xff08;Bean Machine&#xff09;&#xff0c;是由英国统计学家弗朗西斯高尔顿&#xff08;Francis Galton&#xff09;于19世纪末发明的一种物理装置&#xff0c;用于演示随机分…...

OpenCV视频I/O(7)视频采集类VideoCapture之初始化视频捕获设备或打开一个视频文件函数open()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 为视频捕获打开一个视频文件、捕获设备或 IP 视频流。 这是一个重载成员函数&#xff0c;提供给用户方便使用。它与上述函数的不同之处仅在于它所…...

vue3+vite@4+ts+elementplus创建项目详解

1、第一步创建项目cnpm init vite4 2、设置vue3.2局域网可访问配置&#xff1a; 找到项目路径下的package.json目录下找到script对象下面添加一下代码&#xff1a; "serve": "vite --host 0.0.0.0" 启动项目命令不在是dev而是&#xff1a;cnpm run serve 3…...

Python 从入门到实战34(实例2:绘制蟒蛇)

我们的目标是&#xff1a;通过这一套资料学习下来&#xff0c;通过熟练掌握python基础&#xff0c;然后结合经典实例、实践相结合&#xff0c;使我们完全掌握python&#xff0c;并做到独立完成项目开发的能力。 上篇文章我们讨论了数据库MySQL操作的相关知识。今天学习一个使用…...

Visual Studio C# 处理和修复 WinRiver II 测量项目 MMT 文件错误

Visual Studio C# 处理和修复 WinRiver II 测量项目 MMT 文件错误 前言一、WinRiver II 测量项目 MMT 文件的结构二、WinRiver II 无法打开或操作测量项目 MMT 文件2.1 无法载入船测多线法测量文件2.2 可以载入测验项目 MMT 文件&#xff0c;但 ADCP 后处理软件无法写入信息2.3…...

JAVA实现大写金额转小写金额

在金融行业中经常需要把大写金额转成小写金额&#xff0c;之前在一次开发中有个类似的需求&#xff0c;翻阅了好多博文&#xff0c;都没找到合适的&#xff0c;故没办法&#xff0c;就花了点时间研究并实现! 实现代码如下: private static final Character ZERO 零;private s…...

如何使用ssm实现基于SSM的宠物服务平台的设计与实现+vue

TOC ssm779基于SSM的宠物服务平台的设计与实现vue 绪论 1.1 研究背景 当前社会各行业领域竞争压力非常大&#xff0c;随着当前时代的信息化&#xff0c;科学化发展&#xff0c;让社会各行业领域都争相使用新的信息技术&#xff0c;对行业内的各种相关数据进行科学化&#x…...

【C++学习笔记 21】C++中的动态数组 vertor

静态数组 首先来创建一个静态数组 #include <iostream> #include <string>struct Vertex {float x, y, z; };std::ostream& operator<<(std::ostream& stream, const Vertex& vertex) {stream << vertex.x << "," <&…...

MongoDB 快速入门+单机部署(附带脚本)

目录 介绍 体系结构 数据模型 BSON BSON 数据类型 特点 高性能 高可用 高扩展 丰富的查询支持 其他特点 部署 单机部署 普通安装 脚本安装 Docker Compose 安装 卸载 停止 MongoDB 删除包 删除数据目录 参考&#xff1a; https://docs.mongoing.com/ 介绍…...

组合数求法汇总

一&#xff1a;递推求解 对于组合数&#xff0c;有此式&#xff1a; C n m C n − 1 m − 1 C n − 1 m C_{n}^{m}C_{n-1}^{m-1}C_{n-1}^{m} Cnm​Cn−1m−1​Cn−1m​。 C n m C_{n}^{m} Cnm​ 可理解为 n n n 个数中选 m m m 个&#xff0c;不同的方案。对于第 n n n 个…...

Python知识点:在Python编程中,如何使用Joblib进行并行计算

开篇&#xff0c;先说一个好消息&#xff0c;截止到2025年1月1日前&#xff0c;翻到文末找到我&#xff0c;赠送定制版的开题报告和任务书&#xff0c;先到先得&#xff01;过期不候&#xff01; Joblib是一个Python库&#xff0c;它被设计用来提供轻便的并行计算解决方案&…...

matlab-对比两张图片的CIElab分量的差值并形成直方图

%对比两张图片的CIElab分量的差值并形成直方图&#xff0c;改个路径就能用&#xff0c;图片分辨率要一致 close all; clear all; clc; I1imread(E:\test\resources\image\1.jpg); I2imread(E:\test\resources\image\2.jpg); lab1 rgb2lab(I1); lab2 rgb2lab(I2); % 提取色度…...

(十七)、Mac 安装k8s

文章目录 1、Enable Kubernetes2、查看k8s运行状态3、启用 kubernetes-dashboard3.1、如果启动成功&#xff0c;可以在浏览器访问3.2、如果没有跳转&#xff0c;需要单独安装 kubernetes-dashboard3.2.1、方式一&#xff1a;一步到位3.2.2、方式二&#xff1a;逐步进行 1、Enab…...

信息学奥赛一本通 2087:【22CSPJ普及组】解密(decode) | 洛谷 P8814 [CSP-J 2022] 解密

【题目链接】 洛谷 P8814 [CSP-J 2022] 解密 ybt 2087&#xff1a;【22CSPJ普及组】解密(decode) 【题目考点】 1. 数学&#xff1a;一元二次方程求根 【解题思路】 输入n&#xff0c;d&#xff0c;e&#xff0c;满足 n p ∗ q np*q np∗q e ∗ d ( p − 1 ) ( q − 1…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)

说明&#xff1a; 想象一下&#xff0c;你正在用eNSP搭建一个虚拟的网络世界&#xff0c;里面有虚拟的路由器、交换机、电脑&#xff08;PC&#xff09;等等。这些设备都在你的电脑里面“运行”&#xff0c;它们之间可以互相通信&#xff0c;就像一个封闭的小王国。 但是&#…...

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

使用分级同态加密防御梯度泄漏

抽象 联邦学习 &#xff08;FL&#xff09; 支持跨分布式客户端进行协作模型训练&#xff0c;而无需共享原始数据&#xff0c;这使其成为在互联和自动驾驶汽车 &#xff08;CAV&#xff09; 等领域保护隐私的机器学习的一种很有前途的方法。然而&#xff0c;最近的研究表明&…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练

前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1)&#xff1a;从基础到实战的深度解析-CSDN博客&#xff0c;但实际面试中&#xff0c;企业更关注候选人对复杂场景的应对能力&#xff08;如多设备并发扫描、低功耗与高发现率的平衡&#xff09;和前沿技术的…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理&#xff1a;刘治强&#xff0c;浙江大学硕士生&#xff0c;研究方向为知识图谱表示学习&#xff0c;大语言模型 论文链接&#xff1a;http://arxiv.org/abs/2407.16127 发表会议&#xff1a;ISWC 2024 1. 动机 传统的知识图谱补全&#xff08;KGC&#xff09;模型通过…...

九天毕昇深度学习平台 | 如何安装库?

pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子&#xff1a; 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...

【Go语言基础【13】】函数、闭包、方法

文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数&#xff08;函数作为参数、返回值&#xff09; 三、匿名函数与闭包1. 匿名函数&#xff08;Lambda函…...

Linux 中如何提取压缩文件 ?

Linux 是一种流行的开源操作系统&#xff0c;它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间&#xff0c;使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的&#xff0c;要在 …...

虚拟电厂发展三大趋势:市场化、技术主导、车网互联

市场化&#xff1a;从政策驱动到多元盈利 政策全面赋能 2025年4月&#xff0c;国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》&#xff0c;首次明确虚拟电厂为“独立市场主体”&#xff0c;提出硬性目标&#xff1a;2027年全国调节能力≥2000万千瓦&#xff0…...

Qt 事件处理中 return 的深入解析

Qt 事件处理中 return 的深入解析 在 Qt 事件处理中&#xff0c;return 语句的使用是另一个关键概念&#xff0c;它与 event->accept()/event->ignore() 密切相关但作用不同。让我们详细分析一下它们之间的关系和工作原理。 核心区别&#xff1a;不同层级的事件处理 方…...