Keil5新建工程

news2024/11/25 18:25:23

STM32新建工程

  • 1、基于寄存器、基于库函数、基于HAL
  • 2、基于标准库的工程
  • 3、工程架构
  • 4、基于库函数点灯实验

1、基于寄存器、基于库函数、基于HAL

1、基于寄存器:与51单片机开发案方式一样,是用程序直接配置寄存器,来达到我们想要的功能,这种方式最底层、最直接、效率更高一些,但是由于STM32的结构复杂、寄存器太多,所以基于寄存器的方式目前是不推荐的。
2、基于库函数:是使用ST官方提供封装好的函数,通过调用这些函数间接地配置寄存器。由于ST对寄存器封装的比较好,所以这种方式既能满足对寄存器的配置,对开发人员比较友好,有利于提高开发效率。推荐使用
3、基于HAL库:可以用图形化界面快速配置STM32,这个比较适合快速上手STM32的情况,但是这种方式隐藏了底层逻辑,如果对STM32不熟悉,基本只能停留在很浅的水平。可以熟悉基于库函数以后,熟悉基于HAL库方式,因为比较方便。

2、基于标准库的工程

固件库资源:https://pan.baidu.com/s/1fWaLxrYGIisNlBB2Rf4-1g 提取码 :oef1。提取密码:32
1、建立工程文件STM32Progect,Keil中新建工程,选择型号;
2、工程文件STM32Progect里建立Start、Library、User等文件,复制固件库里面的文件到工程文件;在创建的文件中添加固件库到start文件夹下
start文件夹

启动文件的选择:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

3、工程里对应建立Start、Library、User等同名称的分组,然后将文件夹内的文件添加工程分组里
在这里插入图片描述
将固件库中的库函数源文件和头文件复制到工程里的Library中。
在这里插入图片描述
在User文件夹添加stm配置文件和中断文件
在这里插入图片描述
4、工程选项,C/C++,Include Paths内声明所有包含头文件的文件夹;
在这里插入图片描述
5、工程选项,C/C++,Define内定义USE_STDPERIPH_DRIVER
在这里插入图片描述

6、工程选项,Debug,下拉列表选择对应调试器,Settings,Flash Download里勾选Rset and Run。

3、工程架构

在这里插入图片描述
主动执行:首先是startup启动文件,这个是程序执行最基本的文件。启动文件是用汇编编写的,包括中断向量表,中断服务函数等。中断服务函数中有个复位中断,这就是整个程序的入口。当STM32上电复位或者按下复位键之后,程序就会进入复位中断函数执行。复位中断函数主要做了两件事情,第一,调用SystemInit函数;第二,调用main函数,对应启动文件的这里。其他中断也被定义,当符合条件后,会调用。
被动执行:
封装寄存器,更有利于程序的可读性。

4、基于库函数点灯实验

#include "stm32f10x.h"                  // Device header

int main(void)
{
	/*
	配置寄存器的方式进行点灯的操作,这种方式需要不断
	地查手册来了解每个寄存器每位是干什么的。
	不方便
	
	RCC->APB2ENR = 0x00000010;
	GPIOC->CRH = 0x00300000;
	GPIOC->ODR = 0x00000000;		//灯亮
	GPIOC->ODR = 0x00002000;
	*/
	//基于库函数点灯
	//用来使能或者失能APB2的外设时钟
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
	//配置端口模式,第一个是选择哪个GPIO,第二个是参数的结构体
	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOC,&GPIO_InitStructure);
	//设置高电平 GPIO13口为高电平
	GPIO_SetBits(GPIOC,GPIO_Pin_13);
	//设置低电平
	GPIO_ResetBits(GPIOC,GPIO_Pin_13);
	
	while(1)
	{
	}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/616356.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于NE555芯片的简单延时电路和方波信号发生器

简单延时电路 NE555芯片是一种经典的计时器集成电路,常用于电子设计中的定时和延时功能。下面是一个简单的NE555延时电路的详细分析和讲解: NE555芯片是一个多功能的集成电路,主要由比较器、RS触发器、RS锁存器以及输出驱动器等组成。它可以工…

CLIP对比语言-图像预训练算法

本文参考:AIGC神器CLIP:技术详解及应用示例_Baihai IDP的博客-CSDN博客 一、CLIP概述 CLIP:Constastive Language-Image Pretraining。它是一个开源的、多模式的、zero-shot的模型。如果提供一张图像和一段文本描述,该模型可以预…

requestAnimationFrame() 方法

[TOC](requestAnimationFrame() 方法) 一、基本使用 1.基本介绍 window.requestAnimationFrame() 主要是用来实现动画的时候使用的,不管是移动动画还是数字增长动画,使用这个api可以让你的动画看起来非常平滑,因为它是要求浏览器在下次重绘…

【C++ 基础篇:22】:类的 const 对象 与 const 成员函数/方法 以及 类中涉及 const 的常见问题!

本系列 C 相关文章 仅为笔者学习笔记记录,用自己的理解记录学习!C 学习系列将分为三个阶段:基础篇、STL 篇、高阶数据结构与算法篇,相关重点内容如下: 基础篇:类与对象(涉及C的三大特性等&#…

基于html+css的图展示111

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

软件测试基础教程学习2

文章目录 软件测试基础2.1 软件测试模型2.2 确认和验证2.3 软件测试分类2.4软件测试流程概述 软件测试基础 2.1 软件测试模型 2.2 确认和验证 软件确认(Validation)和验证(Verification),简称V&V或V2。 确认是指…

python基于yolov7开发构建手写甲骨文检测识别系统

在我之前的文章中,关于手写文字、手写数字、手写字母的检测识别相关的项目都有了不少的实践了,这里就不在赘述了,感兴趣的话可以自行移步阅读即可。 《基于轻量级目标检测模型实现手写汉字检测识别计数》 《python开发构建基于机器学习模型…

Nginx+Tomcat(多实例)实现动静分离和负载均衡四层、七层(总有些惊奇的际遇,比方说当我遇见你)

文章目录 一、Tomcat 多实例部署二、反向代理的两种类型三、NginxTomcat实现负载均衡和动静分离(七层代理)1.动静分离和负载均衡原理2.实现方法3.部署实例(1)部署Nginx负载均衡服务器(2)配置Tomcat多实例服…

【SpringCloud——Sentinel】

一、什么是雪崩? 微服务调用链路中的某个服务发生故障,引起整个链路中的所有微服务都不可用,这就是雪崩。 二、解决雪崩问题的常见措施 1、超时处理 设定超时时间,请求超过一定时间没有响应就返回错误信息,不会无休…

vue 3 第三十三章:自定义 hooks

文章目录 1. vue 2 中mixins1.1. mixins 的缺点: 2. 自定义 hooks2.1. 创建自定义Hook2.2. 在组件中使用自定义Hook 2. 总结 1. vue 2 中mixins 在Vue.js 2.x版本中, mixin 被广泛用于将组件的逻辑、计算属性和方法复用到其他组件中。然而,使…

华为OD机试真题 Java 实现【明明的随机数】【2023Q1 100分】,附详细解题思路

一、题目描述 明明生成了NN个1到500之间的随机整数。请你删去其中重复的数字,即相同的数字只保留一个,把其余相同的数去掉,然后再把这些数从小到大排序,按照排好的顺序输出。 数据范围: 1≤n≤1000 ,输入…

springboot+vue游戏项目销售发行系统设计与实现

本游戏销售平台管理员功能有个人中心,用户管理,厂商管理,游戏类型管理,游戏信息管理,众筹项目管理,项目投资管理,论坛管理,管理员管理,系统管理等。厂商发布游戏&#xf…

我在公司彻夜加班,老板居然做出这种事.....

讲道理,我的学历远达不到BAT等名企大厂的要求,去不了好公司我认了,大专毕业的我在找工作的时候发现留给自己的机会并不多,最后去了一家不知名的小公司。入职后才发现这家公司其实就是个外包公司,里面的业务部门和制度相…

使用Mybatis接口开发

文章目录 目录 前言 公司项目用到了mybatis开发接口,虽然很简单,但是mybatis不是特别熟悉,这里学习一下 一、Mybatis接口绑定的两种方式 1.接口绑定实现方式 就是在接口的方法上加上Select,updateInsertDelete等注解 select注解介绍: 简便,能快速去操作sql,它只需要在mapper…

AIGC浪潮来袭,奇点云“数智科技大会”洞见AI加速的数智未来

“进化,发生在每一个数字化场景。” 5月25日,以“数据进化论”为主题,由StartDT(奇点云、GrowingIO)主办的2023 StartDT Day数智科技大会在杭召开。企业客户、行业专家、技术专家与数万位参会伙伴相聚云上,…

【Linux】shell脚本教程

目录 一、shell历史 二、执行脚本 三、基本语法 3.1变量 3.1.1变量的分类 3.1.2删除变量 3.2文件名代换(Globbing) 3.3命令代换 3.4算术代换 3.5转义字符 3.6单引号 3.7双引号 四、Shell脚本语法 4.1条件测试 4.2分支 4.2.1if/then/elif…

【SLAM】Kimera-Multi (IEEE-TRO2022 年最佳论文傅京孙)

Kimera-Multi: Robust, Distributed, Dense Metric-Semantic SLAM for Multi-Robot Systems 0 摘要1. 引言2. RELATED WORK3. SYSTEM OVERVIEW4. DISTRIBUTED LOOP CLOSURE DETECTION[4.X Kimera-Multi相关补充](https://github.com/DEARsunshine/Kimera)5. EXPERIMENTS6. CONC…

推箱子-第14届蓝桥杯国赛Scratch真题初中级组第3题

[导读]:超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成,后续会不定期解读蓝桥杯真题,这是Scratch蓝桥杯真题解析第145讲。 推箱子,本题是2023年5月28日上午举行的第14届蓝桥杯国赛Scratch图形化编程初中级组真题第3题&am…

苹果iOS证书制作教程

众所周知,如果你需要上架苹果APP就必须要苹果iOS证书进行APP签名,否则苹果手机将无法安装你开发的APP,废话不多说,直接上教程。 第一步,注册账号 准备appleid必须开通双重认证,如果注册个人开发者直接下载d…

深度学习基础知识-tf.keras实例: 加州房价预测

参考书籍:《Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow, 2nd Edition (Aurelien Geron [Gron, Aurlien])》 代码有修改,已测通。 简单顺序结构 这次得数据集比之前得简单,只包含数字型特征,没有ocean…