| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> 从零开始学STM32(学习笔记——第三天) -> 正文阅读 |
|
[嵌入式]从零开始学STM32(学习笔记——第三天) |
CSDN话题挑战赛第2期 参考文章: 框架:STM32内部核心功能
文章目录一、【ARM内核】1. “ARM 32位Cortex?-M3,最高 72MHz工作频率”①采用ARM 32位Cortex?-M3计算核心。
②专门为嵌入式产品开发所设计的内核,说明了这款单片机适用于嵌入式产品开发。
2. “在存储器的0等待周期访问时可达 1.25DMips/MHz”存储器0等待周期是读写RAM和 Flash时不需要浪费时间,读和写在一瞬间完成,在这种情况下内核的速度可达1.25DMips/MHz。
3. “单周期乘法和硬件除法”
二、【存储器】1. “64KB或128KB的闪存程序存储器”①闪存程序存储器:Flash存储器(简称Flash),一种断电仍可记忆的存储器。在单片机中,Flash是用来保存用户程序(也就是你给单片机编写的程序)的,所以它叫程序存储器。
2. “高达20KB的SRAM”①SRAM:一种可快速读写的静态随机存取存储器存储器,用户程序会从Flash读取到SRAM中运行,SRAM中存放着各种参与程序运算的数据,而且这些数据会随着程序的内容而不断改变,所以它叫随机存取存储器。因为SRAM可以达到读写的0等待周期,而Flash读写需要花上一些时间。如果程序在Flash里运行,写 Flash会拖慢单片机速度,Flash的写入次数最多10万次,频繁写Flash很容易损坏。若把数据从Flash读到SRAM中再运行,一则0等待周期不会拖慢速度,二则没有频繁写Flash的问题,三则不需要做大容量SRAM导致成本升高。
三、【时钟】(1)并非日常使用的钟表,但从单片机技术层面上讲,日常生活中可以记录日期时间的叫实时时钟,缩写是RTC (Real_Time Clock)。RTC 是集成电路,通常称为时钟芯片。
1.振荡器振荡器是一种可以产生固定频率方波的硬件电路,如果你学过数 模电路知识一定了解方波发生电路,比如用NE555芯片做方波输出,单片机内部的振荡器大概与之类似。图3所示是NE555 芯片方波输出的电路原理图,方波信号从3脚输出,这个电路就可以说是一个振荡器。此电路的工作原理解析大家可以在我写的《爱上电子DIY》一书中找到。方波的产生主要靠电阻R1和电容C1,R1和 C1的值决定了方波频率,这种用电阻(R)和电容(C)来产生频率的振荡器电路叫RC振荡器。还有一种石英晶体产生方波输出的振荡器,图4所示是用CD4060芯片外接石英晶体(B1)生产方波的电路,石英晶体的参数值决定了方波频率,这种用石英晶体产生频率的振荡器电路叫晶体振荡器。 ①振荡器是一种可以产生固定频率方波的硬件电路。 RC振荡器: 方波的产生主要靠电阻R和电容C,R和 C的值决定了方波频率,这种用电阻(R)和电容(C)来产生频率的振荡器电路叫RC振荡器。
晶体振荡器: 还有一种石英晶体产生方波输出的振荡器,石英晶体的参数值决定了方波频率,这种用石英晶体产生频率的振荡器电路叫晶体振荡器。
STM32的振荡器 2.倍频器STM32单片机内部有一个倍频器,倍频器的工作是把振荡器的频率分割成多段。 四、【复位】复位功能的作用是让RAM 中的数据清空,让所有连接到复位的相关功能都回到刚开始工作的(初始)状态。在接通电源之前,单片机里的存储器及其他功能的状态是混乱、不稳定的。如果上电后不复位,所有功能都处在无序状态,复位的作用就是让单片机内部秩序化,都回到设计者规定好的状态。这个状态为用户程序的运行做了充分的准备,就像计算机每次重启一样。 在STM32 单片机中,有一个供电监控器,这个监控器是一直工作的,它能监测外部电源的电压,当电压低于2V 时,监控器会让单片机复位。当电压高于2V 时,监控器让单片机进入工作状态。这个监控器本质上达到了上电复位的效果,也就是说你每次给单片机接通电源时,电压都是一次从0 升到3.3V(STM32 的工作电压)的过程,这个过程使单片机复位,不需要再外接复位电路。还有一种复位的方法是在单片机的复位引脚上接一个微动开关,开关另一端接地。按下开关可手动复位,如下图所示。 五、【电源管理】电源管理是指对单片机外接电源处理、分配的功能。 逻辑电源输入和模拟电源输入,这两部分电源输入在引脚较多(64 脚以上)的单片机上是分开的。而在引脚较少的单片机上,逻辑电源和模拟电源并联在一起使用。合并输入方式会对模拟电源的稳定性造成影响,但如果设计中不要求高精度,一般会合并使用。 1.单片机最基本的供电输入端口:逻辑电源输入。给该类端口介入直流电压(2~3.6V): 而模拟电源输入的电压是用在模数转换器(ADC)、RC振荡器和PLL 倍频等模拟电路上的。分开输入的电源在使用上有很多好处,而合并输入可以减少引脚的占用。 2.备用电源输入是一个独立的存在。1.专门给实时时钟(RTC)供电的,保证在逻辑电源断开后让RTC 仍可走时。 六、【低功耗】单片机在正常工作时:
1.睡眠模式···处理方式:只关掉ARM 内核,其他所有功能正常工作。 2.停机模式···处理方式:它将ARM 内核与几乎所有内部功能,包括外部高速晶体振荡器和PLL 都关掉了,只有RTC、看门狗定时器、中断控制器在工作,只是还能接收中断,SRAM 中的数据还保存。 3.待机模式···处理方式:和停机模式的区别把SRAM 和外部中断控制器也关掉了,用户运行的数据消失,也就表示唤醒后必须重头开始,相当于复位。 七、【ADC】···功能:模拟数字转换器即A/D转换器,或简称ADC,通常是指一个将模拟信号转变为数字信号的电子元件。通常的模数转换器是将一个输入电压信号转换为一个输出的数字信号。读取模拟量的电压,类似于电压表。如下图。 八、【DMA】···功能:代替CPU 完成内部功能间的数据传递的。 —>DMA 功能可以在这种数据读取、存放的任务上完全解放内核。它能按预先设定好的设置从ADC 读出数据,然后自动存放到SRAM 中指定的位置,不需要内核的参与。当内核需要ADC 的数据时,只要读SRAM 指定的位置这一步操作就行了。 九、【I/O端口】1.介绍:···命名:在写法上,正确的是I/O,但也有省去斜线直接写成IO 的,在STM32 单片机上也被写成GPIO,都是可以的。
2.工作模式下图所示是GPIO的8 个工作模式: 十、【调试模式】1.特殊接口:JTAG在ARM 的内核中,有一组用于仿真调试的接口。不仅是STM32,所有用ARM 内核的单片机都支持这个接口,它叫JTAG。JTAG 接口的功能主要是做程序仿真。JTAG 还有一个功能是控制I/O 端口的输出电平状态,以测试端口是否正常。但测试端口功能很少有人使用,甚至大家都不太知道有这个功能。 2.仿真···含义:仿真,就是不把程序下载到Flash 里,而是在计算机端直接控制单片机内核,使单片机能达到和运行下载到Flash 里的程序一样的工作效果。因为不是真的运行程序,而是在计算机上模拟的,所以叫仿真。 3.SWD所有STM32 单片机都带有JTAG 接口,还有JATG 的简化接口SWD。下图所示是调试接口与单片机的关系,可以看出JTAG 是内核的一部分,并不是一个独立的功能。连接上,可以用5 条线的标准JATG,也可以用简化版的2条线的SWD,它们的功能是一样的,只是连接的方式不同。(有坑!还不会调试,后面希望能坚持学到!) 十一、【定时器、看门狗、嘀嗒定时器】···定时器定时器的本质是计时,当达到设置的时间后去做某个事件。 ···STM32F103系列定时器···3个普通定时器 1.通用定时器(TIMx)STM32F103xx增强型产品中,内置了多达3个可同步运行的标准定时器(TIM2、 TIM3和TIM4) 。每个定时器都有一个16位的自动加载递加/递减计数器、一个16位的预分频器和4个独立的通道,每个通道都可用于输入捕获、输出比较、 PWM和单脉冲模式输出,在最大的封装配置中可提供最多12个输入捕获、输出比较或PWM通道。 2.高级控制定时器(TIM1)高级控制定时器(TIM1)可以被看成是分配到6个通道的三相PWM发生器(不常用),它具有带死区插入的互补 3.独立看门狗独立的看门狗是基于一个12位的递减计数器和一个8位的预分频器,它由一个内部独立的40kHz的RC振荡器提供时钟;因为这个RC振荡器独立于主时钟,所以它可运行于停机和待机模式。它可以被当成看门狗用于在发生问题时复位整个系统,或作为一个自由定时器为应用程序提供超时管理。通过选项字节可以配置成是软件或硬件启动看门狗。在调试模式下,计数器可以被冻结。 4.窗口看门狗窗口看门狗内有一个7位的递减计数器,并可以设置成自由运行。它可以被当成看门狗用于在发生问题时复位整个系统。它由主时钟驱动,具有早期预警中断功能;在调试模式下,计数器可以被冻结。 5.系统时基定时器(滴答定时器)这个定时器是专用于实时操作系统,也可当成一个标准的递减计数器。它具有下述特性: |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/28 2:20:16- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |