从0学习stm32

news2025/1/26 15:29:30

1.STM32介绍:

ST:指的是意法半导体;

M:指定微处理器

使用的是ARMCortex-M3

ARM分成三个系列:

Cortex-A: 针对多媒体应用(手机)

Cortex-R:针对对实时性和性能有一定要求的场景

Cortex-M:针对低功耗高性能的场景

        Cortex-M0,Cortex-M3,Cortex-M4

指令集:精简指令集;

不同的场景应用具体可以参考产品选型手册:

        《STM8和STM32产品选型手册》

STM32命名规则:

 

 F:通用快闪(FlashMemory)

 L:   低电压(1.65v~3.6v) 

F类型中的F0xx和F1xx系列为2.0~3.6v,F2xx和F4xx系列为1.8~3.6V;

2.stm32芯片内部系统

SoC:片上继承系统

                              stm32微控制器(SoC)

Cortex-M3:内核,执行程序代码

调试系统:供我们调试使用

外设:外部设备

时钟和复位系统:复位指的是按下复位,恢复最原始的状态,芯片正常工作必须有时钟系统;

存储器:存储,Flash,可执行代码下载到存储器,需要执行时加载到内核中;

I/O:控制输入输出的引脚,与外部设备通信

 3.stm32最小系统组成

stm32f103c8t6;

(1)供电系统:

(2)时钟电路(内部时钟源,外部时钟源)

(3)复位电路

(4)下载的接口电路

(5)boot(电路)(启动电路)

 

VCC,GND供电,swdio,swclk下载程序

reset复位按钮 ,8MHz的外部晶振(外部时钟)

4.固件库

(1)mcu的开发方式:

开发语言:汇编语言,C语言

stm32单片机:(汇编  启动代码+C)开发只用到C;

实际开发编程过程中使用的方法:

           1) 配置mcu中的某个功能模块的寄存器,进行操作;

           2)使用ST官方提供的固件库驱动操作

ST官方提供了STM32cubemx 软件,图形化配置开发软件;

(2)固件库:STM32标准外设函数库,简称固件库;

        特点:1)主要由功能接口,数据结构,宏等组成,涵盖了微控制器所有外设的性能特征;

                   2)为开发者访问底层硬件提供了统一的API;无需深入掌握硬件实现细节;

 内含底层源码和启动文件

             CMSIS:启动文件

         STM32.......:外设驱动

                inc:头文件

                src:源码

  CMSIS主要包含:

 stm32f10x.h:实现了硬件寄存器结构,地址映射,寄存器位操作,基本类型等定义;

core_cm3.x:主要针对一些通用寄存器,中断优先级,启动模式相关的内嵌汇编操作接口

system_stm32f10x.x :系统启动初始化,尤其是系统时钟配置

startup_stm32f10x_xx.s:引导启动文件

STM32F10x_StdPeriph_Driver主要包含:

固件库驱动模块(根据需求配置)

 misc.x:主要是中断初始化,分组管理相关接口,实现了用户对中断的配置功能

stm32f10x_exit.x:中断服务相关

 stm32f10x_conf.h  用来统一包含当前系统要用的功能模块头文件,并实现了assert_param宏

5.keil5:

       编译按钮

          工程目录按钮

       配置工程按钮

             软件调试

 (1)目录结构管理:

 

 USER:存放自己写的代码

Libraies:存放固件库相关文件

MDK-ARM:存放相关工程

 

   晶振改为8WHz

   修改输出文件位置

     定义宏

  定义头文件

 

 

 

 

 注意APB1和APB2的时钟不同

 

 

 

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

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

相关文章

基于html+css的自适应展示4

准备项目 项目开发工具 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 项目…

【案例实践】R语言多元数据统计分析在生态环境中的实践应用

查看原文>>>R语言生物群落分析绘图、多元统计分析、CMIP6、遥感碳储量、GEE林业、InVEST等 生态环境领域研究中常常面对众多的不同类型的数据或变量,当要同时分析多个因变量(y)时需要用到多元统计分析(multivariate sta…

vite+vue3+ts搭建项目八(打包性能优化三:使用CDN)

vitevue3ts搭建项目八(打包性能优化三:使用CDN) 本文目录vitevue3ts搭建项目八(打包性能优化三:使用CDN)使用vite-plugin-cdn-import下载npm包在vite.config.ts中通过importToCDN引入CDN参数获取方式可用的…

【事务】本地事务和分布式事务的区别

整理下事务相关的知识点: 文章目录一、事务MySQL事务事务的实现事务的ACID特性事务的隔离级别二、本地事务三、分布式事务认识分布式事务CAP理论BASE理论一、事务 先复习下数据库中学到的事务: MySQL事务 一个事务即一个完整的业务逻辑,如…

计算机组成原理——第三章存储系统(下)

提示:年年岁岁花相似,岁岁年年人不同 文章目录3.4.1 磁盘存储器3.4.2 固态硬盘SSD3.5.1 Cache的基本概念和原理3.5.2 Cache和主存的映射方式3.5.3 Cache替换算法3.5.4 Cache写策略3.6.1 页式存储3.6.2 虚拟存储器3.4.1 磁盘存储器 我们在磁性盘面上涂磁…

【hello Linux】Linux下 gitee 的使用

目录 1. 安装 git 2. gitee 的使用 2.1 注册 gitee 账号 2.2 创建项目:也就是仓库 2.3 下载项目到本地 3. 上传gitee三步走 3.1 三板斧第一招:git add 3.2 三板斧第二招:git commit 3.3 三板斧第三招:git push Linux&#x1f337…

【JavaEE】Spring项目的创建与使用

目录 创建Spring项目 创建Maven项目 引入依赖 使用镜像下载 下载依赖 添加启动类 使用Spring项目 创建Spring配置文件 存储Bean 取出并使用Bean(通过ApplicationContext接口) 通过id 通过class 通过classid(推荐) 取出并使用Bean(通过BeanFactory接口) Applicat…

从零入门激光SLAM(六)——ROS常用工具箱

大家好呀,我是一个SLAM方向的在读博士,深知SLAM学习过程一路走来的坎坷,也十分感谢各位大佬的优质文章和源码。随着知识的越来越多,越来越细,我准备整理一个自己的激光SLAM学习笔记专栏,从0带大家快速上手激…

【react 全家桶】组合组件

本人大二学生一枚&#xff0c;热爱前端&#xff0c;欢迎来交流学习哦&#xff0c;一起来学习吧。 <专栏推荐> &#x1f525;&#xff1a;js专栏 &#x1f525;&#xff1a;vue专栏 &#x1f525;&#xff1a;react专栏 文章目录09 【组合组件】1.包含关系2.特例关系问题…

P3369 【模板】普通平衡树(FHQ Treap树构建和解析)

题目描述 您需要写一种数据结构&#xff08;可参考题目标题&#xff09;&#xff0c;来维护一些数&#xff0c;其中需要提供以下操作&#xff1a; 插入 x 数删除 x 数(若有多个相同的数&#xff0c;应只删除一个)查询 x 数的排名(排名定义为比当前数小的数的个数 1 )查询排名…

【Kafka-Kerberos下执行shell命令】Kafka在Kerberos环境下如何操作shell命令

【Kafka-Kerberos下执行shell命令】Kafka在Kerberos环境下如何操作shell命令1&#xff09;jaas.conf2&#xff09;client.properties3&#xff09;执行命令当大数据集群部署了 Kerberos 认证操作之后&#xff0c;在服务器上操作 kafka shell 命令就会出现认证相关的异常&#x…

【hello Linux】Linux开发工具

目录 1. vim&#xff1a;文本编辑器 1.1 各种模式的切换 补充&#xff1a;ctrl r命令 1.2 命令模式的操作 1.3 插入模式的操作 1.4 底行模式的操作 1.5 配置vim环境 1.6 配置亲属关系 2. gcc/g&#xff1a;编译器 2.1 预处理&#xff1a; 2.2 编译&#xff1a; 2.3 汇编&#x…

Gsum: A General Framework for Guided Neural Abstractive Summarization 论文笔记

Gsum: A General Framework for Guided Neural Abstractive Summarization 论文笔记 Year: 2021 Venue: NAACL Institution: CMU Code: https://github.com/neulab/guided_summarization Overview 这篇文章力求解决的问题是如何控制文本摘要生成&#xff0c;尤其注重可信度方…

floyed 4.9

今天是周末,也就不为难自己了,学习了一下floyed算法(确实简单哈哈),这个算法也是最短路的一种 在一副图中,a到b的距离可能不是直接的ab边最短,这时候就要用到floyed的思想了,可能是a到c到b比直接a到b最短.所以我们要枚举一边才可以知道a到b的最短的路线 这就是floyed的大概 …

7年测试,从功能测试到测试开发,我总算证明了自己

我感觉我是一个比较有发言权的人吧&#xff0c;我在测试行业爬模滚打7年&#xff0c;从点点点的功能测试到现在成为测试开发工程师&#xff0c;工资也翻了几倍&#xff1b; 个人觉得&#xff0c;测试的前景并不差&#xff0c;只要自己肯努力&#xff1b;我刚出来的时候是在鹅厂…

FL Studio21中文版D编曲数字音乐工作软件

随着现在人们的生活水平不断提高&#xff0c;我们的精神生活也越来越丰富&#xff0c;对于现在的年轻人来说&#xff0c;DJ舞曲是一个较受欢迎的领域&#xff0c;有许多年轻人对DJ这个职业感兴趣&#xff0c;想要深入了解DJ编曲这份工作&#xff0c;那么今天我们就来说一说DJ编…

聊聊ChatGPT无法取代的7个工作

ChatGPT——全世界都在谈论的非常流行的人工智能工具。自从 2022 年 11 月 30 日推出以来&#xff0c;ChatGPT 就被证明是执行复杂任务并简化它们的一体式工具。无论是通过 UPenn 的沃顿商学院 MBA 考试&#xff0c;撰写常春藤盟校入学论文&#xff0c;还是完成简单的任务&…

Django自带的Admin后台中如何获取当前登录用户

需求背景 在使用Django快速开发一个IT 电脑、显示器资产管理小系统的时候&#xff0c;遇到一个问题是&#xff0c;当变更资产设备&#xff08;新增、修改、删除&#xff09;的时候&#xff0c;能记录是谁在什么时间进行的变更。 确认的是肯定是登录状态&#xff0c;但是在使用…

算法学习|动态规划 LeetCode 647. 回文子串、516.最长回文子序列

动态规划一、回文子串思路实现代码二、最长回文子序列思路实现代码&#xff08;希望自己能总结出做过的动态规划题&#xff01;要开始回顾之前刷过的题了&#xff09; 一、回文子串 给定一个字符串&#xff0c;你的任务是计算这个字符串中有多少个回文子串。具有不同开始位置或…

回收站数据恢复的方法技巧

​最近有网友反映将一些不经常使用的文件放入回收站后忘记了&#xff0c;清空回收站后想要再次使用文件却怎么都还原不了&#xff0c;想利用回收站数据恢复软件经恢复&#xff0c;咨询有哪些回收站数据恢复软件推荐&#xff0c;下面就给大家推荐回收站数据恢复软件使用方法。 …