本教程含有较多专业词汇,大部分时候,不完全理解并不影响继续往下阅读,大家只需要了解大致的概念即可。
什么是单片机?
单片机,就是把中央处理器CPU、存储器、等计算机的功能部件,和定时器、I/0(输入输出接口)、串口等外设集成在一块集成电路芯片上的微型计算机。
单片机的特点:
1.体积小,集成度高,电源功耗低
2.控制功能强,易拓展外设
3.价格便宜,性价比高
STM32是意法半导体(ST)推出一款32位的单片机。STM32具有超低的价格、超多的外设、丰富的型号、优异的实时性、极低的开发成本等优势。
既然大家已经了解单片机了(bushi) ,那我们就一起走进STM32的世界吧!
如下图,是STM32的系统结构原理图,是不是一脸懵,那就别看下面这个先
让我们简化并翻译一下:
各部分功能如下:
虽然大家大致了解了STM32单片机的结构,但肯定还不清楚自己将要如何操控这个精妙装置。接下来,让我们一起了解一个程序如何实现整个运算过程。
1. x=3 y=x+5
2. 先计算出y的值,若y大于0则点亮位于GPIO_ PA0(也就是单片机上的A0接口)处的LED
看起来很简单,但这是了解单片机运行原理的一个非常重要的案例:
什么?你说你想直接把代码写了跑起来?
单片机还在睡觉呢,或者他脑袋里还想着上一个程序。
你输入单片机的每一个程序,都必须要用很多很多的篇幅告诉它,脑干怎么指挥全身(各种CPU指令)、心脏该怎么跳动(配置时钟树)、血液该怎么流动(定义各种宏以方便数据传输),因为每次输入新程序进去都完全擦除ROM再重写,所以每个程序都必须包含初始化的内容。不然,它当场给你表演一个原地睡觉(卡死)。
配置初始化文件的方法有两种:
STM32库函数的开发,可以避免大家对着数据手册查并操作各种寄存器,而是直接用库的函数来实现各种参数的初始化和功能。
如果你想点亮一个led。你需要准备好一个包含整个单片机初始化的内容的源代码,如下图所示(不用细看,我也也不熟)。
然后再复制粘贴一个GPIO_init(初始化GPIO接口)的函数进去,然后再改成相应的序号。当然,如果你想启动串口、定时器、ADC等其他功能,也需要把相应的初始化代码块一个个塞进去,如下图所示(不用细看,不是重点)。
(上图:GPIO,PB5和PE5的初始化代码块)
然后再在主函数中输入相应的代码(见下一节),我们的程序才能完成。
使用标准库开发有助于大家更了解底层的代码和寄存器的使用,可以保证基础更加的扎实。但是对新手来说不够友好。
如果按照上面的方法,那当我们遇到下面问题的时候,可能就有些棘手:
我们手上有STM32f103c8t6单片机的启动文件,但是此次项目要求我们用STM32f427IIH单片机,且要求你打开CAN1、CAN2、USART1、USART2、TIM23456、和十路的PWM,并按照需求配置参数。那我们可要忙的屁股着火螺旋起飞啰,而且不好检查参数是否正确。
因此,我们需要有更加高效、准确的方法:使用STM32Cubemx配置文件
打开STM32Cubemx,并经过操作,可以看到如下界面:
你可以直接生成相应芯片(此时为F427iih)的初始化和配置文件,非常的舒服。
接下来,直接用图形化界面即可设置好各种参数(可以跟着详细的文档做,一套做下来就能用了)
(上图:左边为希望使用的功能,中间为功能的参数配置,右边为图形化的功能展示)
当然,我也是从萌新走过来的,第一次看到上图也很害怕,感觉自己根本驾驭不了这个恐怖的机器。
下图是做出遥控小车的STM32f103c8t6和引脚图(仅供参考)。是不是感觉不算特别复杂?
什么?看起来还复杂。那我们只能通过我们自己的努力,慢慢熟悉这个软件。我也尽我的力把教程写的有趣一点,让大家愿意跟着一步一步走,收获更多的知识。
跑题了,当我们按下这个按钮
我们就直接得到了一份结构规范的启动和初始化代码。(如下)
点几下鼠标,我们给单片机写的脑干、血液、心脏的程序就全部完成啦!
因此可以看出,STM32CubeMx是一个很便捷的图形化配置软件,可以快速配置、维护、修改工程。后续所有教程都将基于STM32Cubemx的开发。
直接上干货
需求如下:
x=3 y=x+5
计算出y的值,若大于0则点亮位于GPIO_ PA0(也就是单片机上的A0接口)处的LED
代码是这个(基于HAL库编程)要写在主函数的无限循环中(为什么是无限循环呢,我们可以假设一个智能家居设备,即使你没按下按钮,他也会一直运行着,一直判断你是否按下按钮,或者监测一些其他的数据)
代码很好读懂,定义x,y两个unsigned int类型的变量(HAL库有对数据类型单独进行宏定义,感兴趣的可以右击uint8_t并进入definition)
然后做加法,然后判断,若y>0,输出低电平,电流从LED的正极流进PA0,LED点亮。
STM32是机器,他只听得懂机器语言(汇编语言),因此我们需要把我们上面写的给人看的代码变成汇编语言,大概是下面的效果(别细看 不考)
因此我们写完代码,要点一下编译按钮。
此时的内容不只是程序,而更应该称为 指令。
我们用专门的烧录器将代码直接烧写至单片机的FLASH内,即完成了代码的烧录。注:一般烧录后需要按一下复位的按钮单片机才会开始运行。
Keil这个软件等于说自带烧录的环境,只需要按照教程选好型号即可将编译好的代码烧录进单片机。
汇编语言的代码烧写至FLASH内。
复位单片机!
单片机开始运行!
PC(程序计数器)从零开始累加,执行以下循环
在第n=114514时,CPU收到指令,将一个1塞进一个叫GPIOA->BRR寄存器的某一位中
随着一个1塞进了那个位置,寄存器的电路所连接的一个三极管轰然导通,电流如泉涌一般沿着三极管导向了GND(可以理解为负极),如此,那个名为PA0的引脚变为了低电平,LED也随之点亮。
这就是我们如何点亮一个led的全过程,写的挺粗糙的。希望这篇教程能起到抛砖引玉的效果,让大家能通过此教程了解到单片机工作的原理,并有兴趣更进一步的深入学习,在之后的学习中事半功倍。
其他的教程,由于CSDN插入图片较为麻烦,因此我直接将生成的PDF文档放入免费的资源中,可以进入我的主页查找。
如下,包含IO、PWM控制舵机、电路搭建、电机控制的教程,代码和演示视频,都置于其中。
祝大家学业有成。
main.c#include "stm32f10x.h" // Device header#include "Delay.h"#include "OLED.h"int main(void){ OLED_Init(); OLED_ShowChar(1, 1, 'A'); OLED_ShowString(1, 3, "HelloWorld!");
ST7789-TFT屏幕驱动 & 整理有stm32/51单片机/arduino等驱动代码
本文详细介绍如何使用ST-LINK/V2和USB转TTL串口板为STM32单片机下载程序,包括STM32启动模式、JTAG与SWD接口对比、驱动安装及官方软件STM32ST-LINKUtility和FlashLoaderDemonstrator的操作流程。
# STM32单片机基础架构STM32单片机是一款广泛应用于嵌入式系统的微控制器系列,因其强大的性能和丰富的外设支持,在物联网、智能家居、工业控制等领域得到了广泛应用。本文将从STM32单片机的基本架构、编程以及应用示例等方面进行介绍,并给出相应的代码示例和流程图。## STM32单片机的基本架构STM32系列单片机基于ARM Cortex-M内核,主要分为三个系列:STM32F(主流
# STM32单片机软件架构STM32单片机因其优异的性能和强大的功能广泛应用于嵌入式系统开发中。在对STM32进行开发时,合理的软件架构设计对项目的成功至关重要。本文将介绍STM32单片机的软件架构,并用代码示例帮助理解。## 软件架构的基本组成STM32单片机的软件架构主要由以下几个部分组成:1. **驱动层(Driver Layer)**:负责直接与硬件交互,控制外设。2.
STM32简单了解STM32简介STM32分类了解STM32 STM32简介STM32,是一款单片机,ST 是意法半导体,M 是 Microelectronics 的缩写,32 表示 32 位,合起来就是 ST 公司开发的 32 位微控制器。STM32分类STM32 有很多系列,可以满足市场的各种需求,从内核上分有 Cortex-M0、M3、M4 和 M7 这几种,每个内核又大概分为主流、高性能
STM32是ARM Cortex-M内核单片机。目前提供10大产品线(F0, F1, F2, F3, F4, F7, H7, L0, L1,L4),超过700个型号。STM32产品广泛应用于工业控制、消费电子、物联网、通讯设备、医疗服务、安防监控等应用领域,其优异的性能进一步推动了生活和产业智能化的发展。截至2017年4月,STM32全球出货量超过24亿颗。主流型MCUSTM32F0系列 – AR
目录STM32f1库函数开发学习硬件基础一. 硬件资源二. 部分拓展硬件1. 启动方式2. JTAG3. EEPROM4. 液晶显示5. PS/2 接口 STM32f1库函数开发学习硬件基础一. 硬件资源 可能用到的硬件资源:HS0038 红外接收DS18B20 数字温度传感器24C02 EEPROMJTAG/SWDCH340GAMS1117-3.3 电源稳压芯片PS/2 接头SD卡W25Q64
STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M3内核(ST's product portfolio contains a comprehensive range of microcontrollers, from robust, low-cost 8-
介绍单片机介绍学习自正点原子 b站课程。单片机和电脑的类比:内存是 SRAM,硬盘是 FLASH,主板是外设。 单片机拓展也很方便。可做仪器仪表,家用电器,工业控制,汽车电子。单片机发展由48→51→MCS96 微控制器阶段→ARM, RISC-V 微控制器全面发展阶段。应用三阶段,SCM 单片阶段(把微电脑集成在一块芯片上)→MCU 完善控制阶段→SoC 嵌入式系统阶段(软硬件协同设计,单片机里
一、是什么?基于Cortex-M3内核,采用ARMv7-M架构的32bitMCU二、能做什么?与内部资源有关,例如通信接口USART:ESP8266 WIFI 模块、GSM 模块、蓝牙模块、GPS 模块、指纹识别模块等。IIC:EEPROM、MPU6050 陀螺仪、0.96 寸OLED 屏、电容屏等SPI:串行FLASH、以太网W5500、VS1003/1053 音频模块、SPI 接口的OLED屏
STM32的存储器结构存储器是单片机结构的重要组成部分,存储器是用来存储编译好的程序代码和数据的,有了存储器单片机系统才具有记忆功能。按照存储介质的特性,可以分“易失性存储器”和“非易失性存储器”两类。易失性存储器断电后,里面存储的内容会丢失;非易失性存储器断电后,数据可以依然保持。CM3/CM4的存储结构STM32是在CM3或CM4内核的基础上进行设计,故要了解STM32的存储器的结构必须先了解
文章目录1 简介2 绪论2.1 课题背景3 系统设计3.1 系统架构3.2 硬件部分3.2.1 DS18B20 简介3.2.2 LCD1602 液晶屏简介3.3 软件部分3.3.1 整体软件流程3.3.2 初始化3.3.3 温度采集与显示3.4 实现效果3.5 部分相关代码4 最后 1 简介Hi,大家好,学长今天向大家介绍一个 单片机项目基于stm32的智能温控风扇设计与实现大家可用于 课程设计
文章目录STM32学习笔记一、STM32简介二、开发1、使用软件1.1、书签工具2、片上资源 / 外设3、命名规则4、芯片的系统结构5、引脚定义6、启动配置7、最小系统电路三、软件安装及新建工程1、软件安装2、建立STM32工程3、配置调试器4、配置寄存器4.1、通过查阅文档进行配置4.2、通过库函数进行配置四、型号分类及缩写五、GPIO1、基本结构2、系统结构3、GPIO位结构4、GPIO模式
1.1 STM32简介 STM32 是意法半导体(STMicroelectronics)公司推出的一款 32 位 ARM Cortex-M 微控制器。它具有高性能、低功耗、丰富的外设和广泛的应用,适用于工业自动化、机器人控制、智能家居、医疗设备、汽车电子等领域。1.1.1 STM32出现的背景 STM32的出现背景可以追溯到ARM公司在 2004 年推出 Cortex-M3 内核。
2.2 系统主程序设计系统软件程序主要包括数据采集和稳定控制。图6是主程序流程图:系统上电后首先初始化嵌入式微处理器和外设,其次设置中断服务子程序,开中断。主控芯片STM32F103VCT6使用内部集成的ADC模块,采集半导体激光器模块当前的温度、功率的数据,并对数据进行一定的处理。首先,调节半导体激光器的温度,根据实际温度值与基准值的偏差选择相应的操作,如果温度偏差为负,则进行提高反向电流的操作
随着单片机技术的发展,目前已经从8位机升级到32位机。编程语言也从汇编语言逐步变成以C语言为主,汇编为辅。一、STM32简介· STM32是由ST公司开发的32位微控制器,是继MCS51单片机(8位机)后又一款非常经典的单片机(MCU)。它基于ARMv7架构的32位Cortex-M3微控制器内核。STM32凭借其产品线的多样化、极高的性价比、简单易用的库开发方式,迅速在众多Cortex-M3 MC
一、 摘要InfoPath是企业级搜集信息和制作表单的工具,将很多的界面控件集成在该工具中,为企业开发表单提供了极大的方便。InfoPath文件的后缀名是.XML,可见InfoPath是基于XML技术的,作为一个数据存储中间层的技术,InfoPath将大量常用控件,如:DatePicker、TextBox、List
本教程面向广大python爱好者提供,欢迎探讨学习。有需要反馈的欢迎在评论区留言本章节视频链接 点击观看 第一章--石破天惊本教程面向广大python爱好者提供,欢迎探讨学习。有需要反馈的欢迎在评论区留言第一节--飘洋过海来看你 之 一个海龟的旅行1.海龟简介先来展示一下2.本节大纲和目标3.绘图学习辅助代码的准备4.本节主要画图功能的总结第二节--python的生命基础(1)1.变量 abc -
抓住你了!文章目录JavaEE & 协议 & 信息是如何在一个机器传到另一个机器的1. 局域网2. 广域网3. IP与端口号(初识)4. 协议4.1 协议分类分层4.2 协议分层的好处4.3 真实的网络协议分层,TCP/IP五层网络模型4.3.1 应用层4.3.2 传输层4.3.3 网络层4.3.4 数据链路层4.3.5 物理层4.3.6 总结4.4 网络分层后,数据的变化
阅读目录FuzzyWuzzy 简介安装用法已知移植 FuzzyWuzzy 简介FuzzyWuzzy 是一个简单易用的模糊字符串匹配工具包。它依据 Levenshtein Distance 算法 计算两个序列之间的差异。Levenshtein Distance 算法,又叫 Edit Distance 算法,是指两个字符串之间,由一个转成另一个所需的最少编辑操作次数。许可的编