stm32怎么软件使单片机复位
ARM公司的高性能”Cortex-M3”内核1.25DMips/MHz,而ARM7TDMI只有0.95DMips/MHz一流的外设1μs的双12位ADC,4兆位/秒的UART,18兆位/秒的SPI,18MHz的I/O翻转速度低功耗在72MHz时消耗36mA(所有外设处于工作状态),待机时下降到2μA最大的集成度复位电路、低电压检测、调压器、精确的RC振荡器等简单的结构和易用的工具 12V-36V供电兼容5V的I/O管脚优异的安全时钟模式带唤醒功能的低功耗模式内部RC振荡器内嵌复位电路工作温度范围:-40°C至+85°C或105°C 特点内核:ARM32位Cortex-M3 CPU,最高工作频率72MHz,1.25DMIPS/MHz。
单周期乘法和硬件除法。
存储器:片上集成32-512KB的Flash存储器。
6-64KB的SRAM存储器。
时钟、复位和电源管理:2.0-3.6V的电源供电和I/O接口的驱动电压。
上电复位(POR)、掉电复位(PDR)和可编程的电压探测器(PVD)。
4-16MHz的晶振。
内嵌出厂前调校的8MHz RC振荡电路。
内部40 kHz的RC振荡电路。
用于CPU时钟的PLL。
带校准用于RTC的32kHz的晶振。
低功耗:3种低功耗模式:休眠,停止,待机模式。
为RTC和备份寄存器供电的VBAT。
调试模式:串行调试(SWD)和JTAG接口。
DMA:12通道DMA控制器。
支持的外设:定时器,ADC,DAC,SPI,IIC和UART。
3个12位的us级的A/D转换器(16通道):A/D测量范围:0-3.6V。
双采样和保持能力。
片上集成一个温度传感器。
2通道12位D/A转换器:STM32F103xC,STM32F103xD,STM32F103xE独有。
最多高达112个的快速I/O端口:根据型号的不同,有26,37,51,80,和112的I/O端口,所有的端口都可以映射到16个外部中断向量。
除了模拟输入,所有的都可以接受5V以内的输入。
最多多达11个定时器:4个16位定时器,每个定时器有4个IC/OC/PWM或者脉冲计数器。
2个16位的6通道高级控制定时器:最多6个通道可用于PWM输出。
2个看门狗定时器(独立看门狗和窗口看门狗)。
Systick定时器:24位倒计数器。
2个16位基本定时器用于驱动DAC。
最多多达13个通信接口:2个IIC接口(SMBus/PMBus)。
5个USART接口(ISO7816接口,LIN,IrDA兼容,调试控制)。
3个SPI接口(18 Mbit/s),两个和IIS复用。
CAN接口(2.0B)。
USB 2.0全速接口。
SDIO接口。
ECOPACK封装:STM32F103xx系列微控制器采用ECOPACK封装形式。
系统作用1、集成嵌入式Flash和SRAM存储器的ARM Cortex-M3内核。
和8/16位设备相比,ARM Cortex-M3 32位RISC处理器提供了更高的代码效率。
STM32F103xx微控制器带有一个嵌入式的ARM核,所以可以兼容所有的ARM工具和软件。
2、嵌入式Flash存储器和RAM存储器:内置多达512KB的嵌入式Flash,可用于存储程序和数据。
多达64KB的嵌入式SRAM可以以CPU的时钟速度进行读写(不待等待状态)。
3、可变静态存储器(FSMC):FSMC嵌入在STM32F103xC,STM32F103xD,STM32F103xE中,带有4个片选,支持四种模式:Flash,RAM,PSRAM,NOR和NAND。
3个FSMC中断线经过OR后连接到NVIC。
没有读/写FIFO,除PCCARD之外,代码都是从外部存储器执行,不支持Boot,目标频率等于SYSCLK/2,所以当系统时钟是72MHz时,外部访问按照36MHz进行。
4、嵌套矢量中断控制器(NVIC):可以处理43个可屏蔽中断通道(不包括Cortex-M3的16根中断线),提供16个中断优先级。
紧密耦合的NVIC实现了更低的中断处理延迟,直接向内核传递中断入口向量表地址,紧密耦合的NVIC内核接口,允许中断提前处理,对后到的更高优先级的中断进行处理,支持尾链,自动保存处理器状态,中断入口在中断退出时自动恢复,不需要指令干预。
5、外部中断/事件控制器(EXTI):外部中断/事件控制器由用于19条产生中断/事件请求的边沿探测器线组成。
每条线可以被单独配置用于选择触发事件(上升沿,下降沿,或者两者都可以),也可以被单独屏蔽。
有一个挂起寄存器来维护中断请求的状态。
当外部线上出现长度超过内部APB2时钟周期的脉冲时,EXTI能够探测到。
多达112个GPIO连接到16个外部中断线。
6、时钟和启动:在启动的时候还是要进行系统时钟选择,但复位的时候内部8MHz的晶振被选用作CPU时钟。
可以选择一个外部的4-16MHz的时钟,并且会被监视来判定是否成功。
在这期间,控制器被禁止并且软件中断管理也随后被禁止。
同时,如果有需要(例如碰到一个间接使用的晶振失败),PLL时钟的中断管理完全可用。
多个预比较器可以用于配置AHB频率,包括高速APB(PB2)和低速APB(APB1),高速APB最高的频率为72MHz,低速APB最高的频率为36MHz。
7、Boot模式:在启动的时候,Boot引脚被用来在3种Boot选项种选择一种:从用户Flash导入,从系统存储器导入,从SRAM导入。
Boot导入程序位于系统存储器,用于通过USART1重新对Flash存储器编程。
8、电源供电方案:VDD ,电压范围为2.0V-3.6V,外部电源通过VDD引脚提供,用于I/O和内部调压器。
VSSA和VDDA,电压范围为2.0-3.6V,外部模拟电压输入,用于ADC,复位模块,RC和PLL,在VDD范围之内(ADC被限制在2....
STM32的 I2C总是在某个while处卡死了,怎么解决,网上说用软件模...
任何一款MCU,其基本原理和功能都是大同小异,所不同的只是其外围功能模块的配置及数量、指令系统等。
对于指令系统,虽然形式上看似千差万别,但实际上只是符号的不同,其所代表的含义、所要完成的功能和寻址方式基本上是类似的。
因此,对于任何一款MCU,主要应从如下的几个方面来理解和掌握:了解MCU的特点要了解一款MCU,首先需要知道就是其ROM空间、RAM空间、IO口数量、定时器数量和定时方式、所提供的外围功能模块、中断源、工作电压及功耗等等。
了解这些后,接下来第一步就是将所选MCU的功能与实际项目开发的要求的功能进行对比,明确那些资源是目前所需要的,那些是本项目所用不到的。
对于项目中需要用到的而所选MCU不提供的功能,则需要认真理解MCU的相关资料,以求用间接的方法来实现,例如,要实现电流输出功能,而单片机没有DA资源,则需要外加DA芯片或者选择带串口的电流输出芯片。
对于项目开发需要用到的资源,则需要认真阅读datasheet上对应的内容,而对于不需要的功能模块则可以忽略或浏览即可。
对于MCU学习来讲,应用才是关键,要在应用中学习,而不是为了学习而学习。
明确了MCU的相关功能后,接下来就可以开始编程了。
对于初学者或初次使用此款MCU的设计者来说,可能会遇到很多对MCU的功能描述不明确的地方,对于此类问题,可以通过两种方法来解决,一种是编写特别的验证程序来理解资料所述的功能;另一种则可以暂时忽略,程序设计中则按照自己目前的理解来编写,留到调试时去修改和完善。
前一种方法适用于时间较宽松的项目和初学者,而后一种方法则适合于具有一定MCU开发经验的人或项目进度较紧迫的情况;指令系统不建议专门花时间去理解。
指令系统只是一种逻辑描述的符号,只有在编程时根据自己的逻辑和程序的逻辑要求来查看相关的指令即可,而且随着编程的进行,对指令系统也会越来越熟练,甚至可以不自觉地记忆下来。
熟悉MCU的基本功能对于绝大多数MCU,下列功能是最普遍也是最基本的,针对不同的MCU,其描述的方式可能会有区别,但本质上是基本相同的:Timer(定时器):Timer的种类虽然比较多,但可归纳为两大类:一类是固定时间间隔的Timer,即其定时的时间是由系统设定的,用户程序不可控制,系统只提供几种固定的时间间隔给用户程序进行选择,如32Hz,16Hz,8Hz等,因此可以用来实现时钟、计时等相关的功能,该类不常见;另一类则是Programmable Timer(可编程定时器),顾名思义,该类Timer的定时时间是可以由用户的程序来控制的,控制的方式包括:时钟源的选择、分频数(Prescale)选择及预制数的设定等。
此类Timer应用非常灵活,实际的使用也千变万化,比如实现计数、定时、或者输出PWM等。
由于时钟源可以自由选择,因此,此类Timer一般均与Event Counter(事件计数器)合在一起;IO口:任何MCU都具有一定数量的IO口,没有IO口,MCU就失去了与外部沟通的渠道。
根据IO口的可配置情况,可以分为如下几种类型:纯输入或纯输出口:此类IO口有MCU硬件设计决定,只能是输入或输出,不可用软件来进行实时的设定,不常见;直接读写IO口:如51单片机的IO口就属于此类IO口。
当执行读IO口指令时,就是输入口;当执行写IO口指令则自动为输出口;可设定方向的IO口:此类IO口的输入或输出是通过寄存器来配置的,应用比较灵活;功能性IO口:此类IO口是可以复用的,比如第二功能是IIC、SPI、AD、UART/USART等,可以通过寄存器来实现复用功能,这类IO口可以通过专用芯片实现较为复杂的特定功能,比如说通过MAX232实现RS232通讯、通过AT24C02实现掉电存储等;对于IO口的使用,重要的一点必须牢记的是:对于输入口,必须有明确的电平信号,确保不能浮空(可以通过增加上拉或下拉电阻来实现);而对于输出口,其输出的状态的电平必须考虑其外部的连接情况,比如说驱动能力。
外部中断:外部中断也是绝大多数MCU所具有的基本功能,一般用于信号的实时触发,中断的方式有上升沿、下降沿触发和电平触发等。
外部中断一般通过输入口来实现,若为IO口,则只有设为输入时其中断功能才会开启;若为输出口,则外部中断功能将自动关闭。
外部中断的应用如下:外部触发信号的检测:一种是基于实时性的要求,比如可控硅的控制,突发性信号的检测等;而另一种情况则是省电的需要;信号频率的测量:可以通过上升沿或者下降沿触发中断;按键的检测和系统的唤醒:对于进入休眠状态的MCU,一般需要通过外部中断来进行唤醒,最基本的形式则是按键,通过按键的动作来产生电平的变化;通讯接口:MCU所提供的通讯接口一般包括SPI接口,UART,I2C接口等,其分别描述如下:SPI接口:此类接口是绝大多数MCU都提供的一种最基本通讯方式,其数据传输采用同步时钟来控制,信号包括:SDI(串行数据输入)、SDO(串行数据输出)、SCLK(串行时钟)、CS(可选);此类接口可以工作在Master方式或Slave方式下,通俗说法就是看谁提供时钟信号,提供时钟的一方为Master,相反的一...
单片机好学嘛
看你原来有没有接触过了,第一次学单片机从51开始入手,51是最基础的单片机,编程语言选用C语言比较容易上手,开发软件用keil4 for c51!如果想掌握好的话,必须得买块板子自己调试!以51入手,掌握了中断、计数、通信等之后,再往外扩展其他单片机就容易的很多!我大学单片机就是学的51,后来用到stm32、430等单片机掌握起来就比较快了!另外顶楼上一句,如果想深入的话,一定要学好模电数电,编程离不开硬件调试!单片机没有好学不好学这个说法,只有看你愿不愿学,入门了你就会发现单片机的世界很精彩。
转载请注明出处51数据库 » stm32怎样用软件模拟复位
a07葬心