STM32实现一个简单电灯

新建工程的步骤

  • 建立工程文件夹,Keil中新建工程,选择型号
  • 工程文件夹里建立Start、Library、User等文件夹,复制固件库里面
  • 的文件到工程文件夹
  • 工程里对应建立Start、Library、User等同名称的分组,然后将文件
  • 夹内的文件添加到工程分组里
  • 工程选项,C/C++,IncludePaths内声明所有包含头文件的文件夹
  • 工程选项,C/C++,Define内定义USE_STDPERIPH_DRIVER
  • 工程选项,Debug,下拉列表选择对应调试器,Settings,Flash
  • Download里勾选Reset and Run

下面来说一下具体步骤:

一、新建工程

使用库函数的方式,需要准备一个STM32 库函数的压缩包

新建一个基于标准库的工程

新建一个文件夹叫工程模板放本次项目

固件库获取:

https://pan.baidu.com/s/1bRC6MWtC7jxyKTCUmBCnRQ?pwd=v4tw

然后找到:

固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3

\DeviceSupport\ST\STM32F10x\startup\arm下的就是STM32的启动文件

STM32程序就是从启动文件开始执行的。

将这些文件都拷贝到工程模板中,但是这样全放进去太乱了,可以新建一个文件夹叫start。

返回到STM32F10x目录

stm32f10x.h 是用来描述STM32有哪些寄存器和他对应的地址的。

system_stm32f10x.csystem_stm32f10x.h 是用来配置时钟的

STM32主频72MHZ,就是system文件里的函数配置的。

将这三个文件复制下来也粘贴到start文件夹下。

这两个cm3-(Cortex-M3)文件就是内核的寄存器描述.当然他还带了一些内核的配置函数,所以多了个:c文件,我们把它俩一并复制下来也粘贴到start文件夹下。
到此为止工程的必要文件就复制完成了。

返回Keil软件

双击start

点击All files

选择启动文件

按住CTRl选择这三个然后点击Add

然后点击close。

这个图标代表只读文件。

最后在工程选项里添加上这个文件夹的头文件路径,否则软件找不到.h文件

点击

添加main函数看工程是否可行。

进入工程模板文件夹,新建文件夹叫User.

右键添加组

改名为User

右键添加新文件

界面右击

然后编写一个main函数,这里注意main函数是一个int型返回值,void参数的函数。还有文件的最后一行必须要是空行,要不然会报警告。

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

点击构建,编译并建立工程

二、两种电灯方法

寄存器

#include "stm32f10x.h"                  // Device headerint main(void)
{RCC->APB2ENR = 0x00000010;//打开GPIOC的时钟GPIOC->CRH = 0x00300000;//GPIOC->ODR = 0x00000000;//亮GPIOC->ODR = 0x00002000;//灭while(1){}
} 

库函数

新建库文件夹

misc是内核的库函数,其他的是内核外的外设库函数。

全部复制到Library中。

这些是库函数的头文件件全部复制到Library中。

这三个复制到工程的User下。

宏定义方法:

滑到8296行

库函数的工程建法:

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

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

相关文章

html5炫酷图片悬停效果实现详解

html5炫酷图片悬停效果实现详解 这里写目录标题 html5炫酷图片悬停效果实现详解项目介绍技术栈核心功能实现1. 页面布局2. 图片容器样式3. 炫酷悬停效果缩放效果倾斜效果模糊效果旋转效果 4. 悬停文字效果5. 性能优化6. 响应式设计 项目亮点总结 项目介绍 本文将详细介绍如何使…

Playwright与Browser Use:领略AI赋能UI自动化测试的魔法魅力

目录 Browser Use是什么? Playwright简介 框架设计的核心目标与原则 Playwright 在 UI 自动化测试中的优势 如何高效拦截错误 实现视频录制 UI自动化框架设计的挑战 测试框架的结构与模块化设计 自动化测试不是银弹 走进Browser Use 横空出世的背景与意义…

Uniapp 实现微信小程序滑动面板功能详解

文章目录 前言一、功能概述二、实现思路三、代码实现总结 前言 Uniapp 实现微信小程序滑动面板功能详解 一、功能概述 滑动面板是移动端常见的交互组件,通常用于在页面底部展开内容面板。本文将介绍如何使用 Uniapp 开发一个支持手势滑动的底部面板组件&#xff0…

【FAQ】HarmonyOS SDK 闭源开放能力 —Push Kit(12)

1.问题描述: pushdeviceid的长度是固定的吗? 解决方案: 在鸿蒙系统中,设备ID的长度是固定的。 2.问题描述: 通过REST API三方推送IM类消息,如何实现应用处于前台时不展示三方推送通知。 解决方案&…

【小兔鲜】day02 Pinia、项目起步、Layout

【小兔鲜】day02 Pinia、项目起步、Layout 1. Pinia2. 添加Pinia到Vue项目3. 案例:Pinia-counter基础使用3.1 Store 是什么?3.2 应该在什么时候使用 Store? 4. Pinia-getters和异步action4.1 getters4.2 action如何实现异步 1. Pinia Pinia 是 Vue 的专…

Android学习之计算器app(java + 详细注释 + 源码)

运行结果: 基础的四则运算: 可能会出现的问题以及解决方法: 问题1:出现多个操作符。 例子:12 解决方法: 在用户点击操作符之后,去检查之前的最后一位,如果最后一位也是操作符的话…

GMap.NET + WPF:构建高性能 ADS-B 航空器追踪平台

ADS-B 简介 ADS - B(Automatic Dependent Surveillance - Broadcast,广播式自动相关监视)是一种先进的航空监视技术。它依靠飞机上的机载设备,自动收集诸如飞机的位置、高度、速度、航向等关键数据,并周期性地以广播的…

关于testng.xml无法找到类的问题

问题:testng.xml添加测试类的时候飘红 解决办法: 1.试图通过自动生成testng.xml插件去解决,感觉也不是这个问题,没有尝试; 2.以为是创建包的方式不对,重新删除后新建--还是找不到 想新建类的时候发现从m…

数据在内存中存储(C语言)

文章目录 前言一、整数在内存中的存储1.1 计算机存储数据的基本单位示例代码 1.2 无符号整数的存储1.3 有符号整数的存储(补码)示例代码 二、大小端字节序和字节序判断2.1 什么是大小端?示例代码 2.2 为什么会有大小端?2.3 字节序…

Python爬虫第2节-网页基础和爬虫基本原理

目录 一、网页基础 1.1 网页的组成 1.2 网页的结构 1.3 节点树及节点间的关系 1.4 选择器 二、爬虫的基本原理 2.1 爬虫概述 2.2 能抓怎样的数据 2.3 JavaScript 渲染页面 一、网页基础 使用浏览器访问网站时,我们会看到各式各样的页面。你是否思考过&…

python-leetcode 64.在排序数组中查找元素的第一个和最后一个位置

题目: 给一个按照非递减顺序排列的整数数组nums,和一个目标值target,请找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值target,返回[-1,-1] 方法一:二分查找 直观的思路肯定是从前往后遍历一遍。用两个变量记录第一次和最后一次…

分享一些新版GPT-4o使用方式!能多模态生图!

目前GPT-4o的整体测评,真的很惊艳。 不知道又有多少人因为OpenAI的这次更新而失业,当然只要AI用得好,会有更多人因之而受益!很多人表示不知道怎么用,对于门外汉来说,4o似乎有点高端。 今天就给大家介绍几…

软件工程面试题(二十四)

1、连接池的原理 j2ee 服务器启动时会建立一定数量的池连接,并一直维持不少于此数量的池连接。当客户端程序需要连接时,吃驱动程序会返回一个未使用的池连接并将其标记为忙。如果当前 没有空闲连接,池驱动就建立一定新的 连接 2、用javascript编写脚本小程序,实现点击全选…

Android:Dialog的使用详解

Android中Dialog的使用详解 Dialog(对话框)是Android中常用的UI组件,用于临时显示重要信息或获取用户输入。 1. 基本Dialog类型 1.1 AlertDialog(警告对话框) 最常用的对话框类型,可以设置标题、消息、…

arinc818 fpga单色图像传输ip

arinc818协议支持的常用线速率如下图 随着图像分辨率的提高,单lane的速率无法满足特定需求,一种方式是通过多个LANE交叉的去传输图像,另外一种是通过降低图像的带宽,即通过只传单色图像达到对应的效果 程序架构如下图所示&#x…

透视投影(Perspective projection)与等距圆柱投影(Equirectangular projection)

一、透视投影 1.方法概述 Perspective projection(透视投影)是一种模拟人眼观察三维空间物体时的视觉效果的投影方法。它通过模拟观察者从一个特定视点观察三维场景的方式来创建二维图像。在透视投影中,远处的物体看起来比近处的物体小&…

三.微服务架构中的精妙设计:服务注册/服务发现-Eureka

一.使用注册中心背景 1.1服务远程调用问题 服务之间远程调⽤时, 我们的URL是写死的 String url "http://127.0.0.1:9090/product/" orderInfo.getProductId(); 缺点: 当更换机器, 或者新增机器时, 这个URL就需要跟着变更, 就需要去通知所有的相关服…

FPGA实现4K MIPI视频解码H265压缩网络推流输出,基于IMX317+VCU架构,支持4K60帧,提供工程源码和技术支持

目录 1、前言工程概述免责声明 2、相关方案推荐我已有的所有工程源码总目录----方便你快速找到自己喜欢的项目我这里已有的 MIPI 编解码方案我这里已有的视频图像编解码方案 3、详细设计方案设计框图FPGA开发板IMX317摄像头MIPI D-PHYMIPI CSI-2 RX Subsystem图像预处理Sensor …

Ollama+open-webui搭建私有本地大模型详细教程

Ollamaopen-webui搭建私有本地大模型详细教程 1. 什么是 Ollama? 1.1. Ollama 简介 ​ Ollama 是一个轻量级的 AI 模型运行时,专注于简化 AI 模型的部署和使用。它支持多种预训练模型(如 Llama、Vicuna、Dolly 等),…

解决Centos7集成IDEA报git版本太低问题

Centos 7 服务器上默认安装的 Git 是 1.8.3.1 版本的 与最新的IDEA已无法匹配,需要更新 首先,卸载老版本 sudo yum -y remove git sudo yum -y remove git-*添加 End Point 到 CentOS 7 仓库 sudo yum -y install https://packages.endpointdev.com/r…