跳转到主要内容

技术

STM32学习笔记——RCC外设的学习和理解

RCC时钟模块并不好理解,初次接触我也是一头雾水,而且我真正掌握它的时候也比较晚,是我在学习uC/os-II,需要分析时钟时才有了深刻认识。但在学习中我却一定要把放在了前列,因为这是整个嵌入式最重要的基础之一,可以说是M3芯片的心脏。初学者理解是比较困难,但是掌握清晰对于嵌入式操作系统特别是Timer定时器以及通讯领域具有重大意义。

ARM指令集—SWP指令

SWP和SWPB是ARM指令集中对存储单元的原子操作。即对存储单元的一次读和一次不可被切割。
SWP和SWPB分别完毕存储器和寄存器之间 一个字(32bit)和一个字节(8bit)的数据交换。

SWP指令主要是完毕ARM体系架构处理器的同步操作。在Linux操作系统中实现信号量的操作。可是此指令在ARMv6架构后就没有採用了,而是通过扩展的LDREX和STREX实现。本片文章主要介绍SWP的功能,对于LDREX和STREX以后再介绍。

SWP的指令格式例如以下:

SWP {}{B} Rd, Rm, [Rn]

当中Rd是目的寄存器,从存储器中读到的值存放于此寄存器中

Rm寄存器是操作数。会将此寄存器中的值存放于存储单元中

[Rn]是寄存器间接寻址,Rn保存的是某个存储单元的地址

关于使用单片机读取外部电压ADC阻抗匹配的问题

单片机的基准电压一般为3.3V,如果外部信号超过了AD测量范围,可以采用电阻分压的方法,但是要注意阻抗匹配问题。比如,SMT32的模数输入阻抗约为10K,如果外接的分压电阻无法远小于该阻值,则会因为信号源输出阻抗较大,AD的输入阻抗较小,从而输入阻抗对信号源信号的电压造成分压,最终导致电压读取误差较大。

因此对于使用单片机读取外部信号电压,外接分压电阻必须选用较小的电阻,或者在对功耗有要求的情况下,可选用大阻值的电压分压后,使用电压跟随器进行阻抗匹配(电压跟随器输入阻抗可达到几兆欧姆,输出阻抗为几欧姆甚至更小)。如果信号源的输出阻抗较大,可采用电压跟随器匹配后再接电阻分压。

对于外置的ADC芯片,在选型时,要留意其类型(SAR型、开关电容型、FLASH型、双积分型、Sigma-Delta型),不同类型的ADC芯片输入阻抗不同——

单片机定时器与数码管静态显示

很多新手在单片机上走的第一步是点亮第一个LED灯,实际上因为开发板的不同,所编写的代码也不同,关键是你要去了解你用的开发板的电路布局。对于电路方面的知识我这里也不祥讲,我要做的是无论你用哪一种开发板我的文章都能帮助你。

  P0 = 0xFE;

  这句代码大家不陌生。

市场呼唤高效能电机方案,Microchip助你实现节能梦,文末有福利!

自1831年英国M.法拉第造出第一台手摇圆盘直流发电机,电机已经有超过180年历史,电机是一种利用电和磁的相互作用实现能量转换和传递的电磁机械装置,广义的电机包括电动机和发电机。电动机从电系统吸收电能,向机械系统输出机械能,各种类型的电动机广泛应用于国民经济各部门以及家用电器中,主要作为驱动各种机械设备的动力,实际上,电机是名副其实的“用电大户”,消耗了全球70%以上的工业用电,在我国,各种电机的总耗电量占全社会用电总量的60%以上,在目前绿色、节能、减排严峻形势下,高效能电机方案需求很大,Microchip针对本土需求可以提供包括有刷直流、无刷直流、步进电机、交流感应电机在内的高效能方案。

阻抗匹配的四种处理方式

当传输路径上阻抗不连续时,会有反射发生,阻抗匹配的作用就是通过端接元器件,时传输路线上的阻抗连续以去除传输链路上产生的反射。

常见的阻抗匹配有如下几种:

<font color="blue"><strong>1. 串联端接方式</strong></font>

直接使用单片机的USART发送数据

<strong>一、使用USART发送数据</strong>

我们在写单片机程序的时候,在Debug时,往往要用到串口输出信息,这是会使用printf打印出我们想要的信息来,但是printf有一个弊端,就是输出打印时间较长。这样在一些对时间精度要求非常高的场合,使用printf将会带来一系列问题,这时,如果使用单片机的USART自定义一个协议,直接发送数据到上位机,将会得到我们想要的效果。

下面对怎样使用USART发送数据做一个整理。

详解io端口与io内存

<strong>(一)地址的概念</strong>

1)物理地址:CPU地址总线传来的地址,由硬件电路控制其具体含义。物理地址中很大一部分是留给内存条中的内存的,但也常被映射到其他存储器上(如显存、BIOS等)。在程序指令中的虚拟地址经过段映射和页面映射后,就生成了物理地址,这个物理地址被放到CPU的地址线上。

物理地址空间,一部分给物理RAM(内存)用,一部分给总线用,这是由硬件设计来决定的,因此在32bits地址线的x86处理器中,物理地址空间是2的32次方,即4GB,但物理RAM一般不能上到4GB,因为还有一部分要给总线用(总线上还挂着别的许多设备)。在PC机中,一般是把低端物理地址给RAM用,高端物理地址给总线用。

MCU 频繁的正常通断电的时候,FLASH被异常改写

<font color="#33b1c8"><strong>问题描述:</strong></font>

某客户反馈, 当 MCU 频繁的正常通断电的时候。FLASH 被异常改写,出现各种各样的异常(整片别擦除、中断向量表被改写为 0、写保护被清掉、被加上读保护 ……..)

<font color="#33b1c8"><strong>问题调研:</strong></font>

首先跟客户沟通:

• 他们是延续之前的项目,进行的一些软硬件简单修改。之前的项目没有出现过类似的问题。

• 确认通断电的时间是足够,就是说他们断电后所有的 VDD 都回到 0.上电的时序也是正常。

STM32之时钟

<strong>一、RCC是什么?</strong>

RCC: Reset Clock Control,时钟和复位控制器

<strong>二、RCC的主要作用</strong>

1、设置系统时钟SYSCLK

2、设置AHB分频因子(决定HCLK等于多少)

3、设置APB2分频因子(决定PCLK2等于多少)

4、设置APB1分频因子(决定PCLK1等于多少)

5、设置各个外设的分频因子

6、控制AHB、APB2和APB1三条总线时钟的开启、控制每个外设时钟的开启。

注意:STM32库函数中时钟的标准配置为PCLK2=HCLK=SYSCLK=PLLCLK=72M,PCLK1=HCLK/2=36M

锂电池保护板原理

锂电池(可充型)之所以需要保护,是由它本身特性决定的。由于锂电池本身的材料决定了它不能被过充、过放、过流、短路及超高温充放电,因此锂电池锂电组件总会跟着一块精致的保护板和一片电流保险器出现。

锂电池的保护功能通常由保护电路板和PTC等电流器件协同完成,保护板是由电子电路组成,在-40℃至+85℃的环境下时刻准确的监视电芯的电压和充放回路的电流,及时控制电流回路的通断;PTC在高温环境下防止电池发生恶劣的损坏。

普通锂电池保护板通常包括控制IC、MOS开关、电阻、电容及辅助器件FUSE、PTC、NTC、ID、存储器等。其中控制IC,在一切正常的情况下控制MOS开关导通,使电芯与外电路导通,而当电芯电压或回路电流超过规定值时,它立刻控制MOS开关关断,保护电芯的安全。

stm32之SysTick的理解(NVIC)

<strong>1、SysTick的介绍</strong>

SysTick定时器被捆绑在NVIC中,用于产生SYSTICK异常(异常号:15)。在以前,大多操作系统需要一个硬件定时器来产生操作系统需要的滴答中断,作为整个系统的时基。例如,为多个任务许以不同数目的时间片,确保没有一个任务能霸占系统;或者把每个定时器周期的某个时间范围赐予特定的任务等,还有操作系统提供的各种定时功能,都与这个滴答定时器有关。因此,需要一个定时器来产生周期性的中断,而且最好还让用户程序不能随意访问它的寄存器,以维持操作系统“心跳”的节律。

全系列三极管应用参数和代换大全

<table bgcolor="#ffffff" border="2" cellpadding="0" cellspacing="0" style="width: 632px;">
<tbody>
<tr id="fps0">
<td height="16" width="68">名称</td>
<td id="fps1" style="width: 51px;" width="64">封装</td>

51的特殊功能寄存器sfr笔记

51系列单片机内部主要有四大功能模块,分别是I/O口模块、中断模块、定时器模块和串口通信模块(串行I/O口)。51开发的重点其实就是对这四个部分进行具体的开发,而其对这四个模块的开发实质则又是能否对每个模块所对应寄存器的正确操纵。

单片机的内部结构可以大概归纳如下图:四大功能模块相关的寄存器又可分为四大部分:

I/O口相关:P1 P2 P3 P4
中断相关:IP IE
定时器相关:TMOD TCON TL0、TH0、TL1、TH1
串口通信相关:PCON SBUF

几种滤波器的比较(巴特沃斯、切比雪夫、贝塞尔滤波器)

<strong>1、数字滤波器</strong>

数字滤波器是指完成信号滤波处理功能的,用有限精度算法实现的离散时间线性非时变系统,其输入是一组数字量,其输出是经过变换的另一组数字量。因此,它本身即可以是用数字硬件装配成的一台完成给定运算的专用数字计算机,也可以是将所需运算编成程序,让通用计算机来执行。

数字滤波器具有稳定性高、精度高、灵活性大等优点。随着数字技术的发展,用数字技术实现滤波器的功能越来越受到人们的注意和广泛的应用。

<strong>2、巴特沃斯滤波器</strong>

SPI总线协议及SPI时序图详解

SPI,是英语Serial Peripheral Interface的缩写,顾名思义就是串行外围设备接口。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议。

SPI是一个环形总线结构,由ss(cs)、sck、sdi、sdo构成,其时序其实很简单,主要是在sck的控制下,两个双向移位寄存器进行数据交换。

上升沿发送、下降沿接收、高位先发送。
上升沿到来的时候,sdo上的电平将被发送到从设备的寄存器中。
下降沿到来的时候,sdi上的电平将被接收到主设备的寄存器中。

开关电源五种 PWM 反馈控制模式

1 引言

PWM 开关稳压或稳流电源基本工作原理就是在输入电压变化、内部参数变化、外接负载变化的情况下,控制电路通过被控制信号与基准信号的差值进行闭环反馈,调节主电路开关器件的导通脉冲宽度,使得开关电源的输出电压或电流等被控制信号稳定。 PWM 的开关频率一般为恒定,控制取样信号有:输出电压、输入电压、输出电流 、输出电感电压、开关器件峰值电流。由这些信号可以构成单环、双环或多环反馈系统 ,实现稳压、稳流及恒定功率的目的,同时可以实现一些附带的过流保护、抗偏磁、均流等功能。现在主要有五种 PWM 反馈控制模式。下面以 VDMOS 开关器件构成的稳压正激型降压斩波器为例,说明五种PWM反馈控制模式的发展过程、基本工作原理、详细电路原理示意图、波形、特点及应用要点,以利于选择应用及仿真建模研究。

2 开关电源 PWM 的五种反馈控制模式

如何提高单片机程序执行效率

首先什么是执行效率。我们平常所说的执行效率就是使用相同的算法在相同输入条件下完成相同计算所产生的系统开销,目前来说一般会更多关注执行时间方面的开销。所有语言编写的代码最终要运行,都要转化成机器码。在更短的时间内完成相同的事那么效率就高。

关于如何提高C语言程序的执行效率,有如下建议:

<strong>1.尽量避免调用延时函数</strong>

关于ISP、IAP、DFU和bootloader

这是嵌入式开发中常用的几个专业术语,其诞生的背景和其具体作用大概如下

在很久很久以前,那是8051单片机流行的时代,做单片机开发都需要一个专用工具,就是单片机的编程器,或者叫烧写器。说“烧”写一点不为过,当年的经典芯片AT89C51在编程时需要十几伏的高电压,加在一个特定的引脚上,才能进入编程。对于某款芯片的编程,都有一个特定的时序,这个时序通常在芯片的datasheet里进行描述并以硬件实现。另外在编程器里的也有一个MCU,这其中使用软件产生这个时序,从而对目标芯片进行编程。电脑通过串口把程序发到编程器,编程器按照规定的时序把程序送入目标芯片。

51单片机数据传送指令

数据传送指令共有29条,数据传送指令一般的操作是把源操作数传送到目的操作数,指令执行完成后,源操作数不变,目的操作数等于源操作数。

如果要求在进行数据传送时,目的操作数不丢失,则不能用直接传送指令,而采用交换型的数据传送指令,数据传送指令不影响标志C,AC和OV,但可能会对奇偶标志P有影响。

<strong>以累加器A为目的操作数类指令(4条)</strong>