CAN Bus, LIN Bus 对比

阅读全文

通信协议 STM32 SPI串行总线协议

SPI 简介

SPI 是英语 Serial Peripheral interface 的缩写,顾名思义就是串行外围设备接口。是 Motorola首先在其 MC68HCXX 系列处理器上定义的。 SPI 接口主要应用在 EEPROM, FLASH,实时时钟, AD 转换器,还有数字信号处理器和数字信号解码器之间。 SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,

阅读全文

通信协议 STM32 IIC串行总线

简介

IIC(Inter-Integrated Circuit)总线是一种由 PHILIPS 公司开发的两线式串行总线,用于连接
微控制器及其外围设备。它是由数据线 SDA 和时钟 SCL 构成的串行总线,可发送和接收数据。
在 CPU 与被控 IC 之间、 IC与IC之间进行双向传送, 高速IIC总线一般可达 400kbps 以上。

阅读全文

SPI、I2C、UART三种串行总线协议的区别

区别一:定义:

SPI(Serial Peripheral Interface:串行外设接口);
I2C(INTER IC BUS)
UART(Universal Asynchronous Receiver Transmitter:通用异步收发器)

阅读全文

STM32 CAN串行通信协议

CAN 简介

CAN 是 Controller Area Network 的缩写(以下称为 CAN),是 ISO 国际标准化的串行通信协议,CAN 的高性能和可靠性已被认同,并被广泛地应用于工业自动化、船舶、医疗设备、工业设备等方面。现场总线是当今自动化领域技术发展的热点之一,被誉为自动化领域的计算机局域网。它的出现为分布式控制系统实现各节点之间实时、可靠的数据通信提供了强有力的技术支持。

阅读全文

STM32定时器

假设 系统时钟是72Mhz,TIM1 是由PCLK2 (72MHz)得到,TIM2-7是由 PCLK1 得到。关键是设定 时钟预分频数,自动重装载寄存器周期的值。

每1秒发生一次更新事件(进入中断服务程序)。RCC_Configuration()的SystemInit()的

阅读全文

MP3 软件解码音乐播放器

基础知识简介

一个 MP3 音乐播放器涉及的知识,除了MP3 格式及其解码还包括 SD 卡驱动,文件系统,GUI 界面的制作、中文显示等知识,SD 卡驱动和文件系统。

阅读全文

STM32 I2S 总线简介

I2S 总线简介

I2S(Inter—IC Sound)总线是飞利浦公司为数字音频设备之间的音频数据传输而制定的一种总线标准,该总线专责于音频设备之间的数据传输,广泛应用于各种多媒体系统

阅读全文

STM32开发入门基础知识

库开发与寄存器开发的关系

在 51单片机的开发中我们常常的作法是直接操作寄存器,比如要控制某些 IO 口的状态,我们直接操作寄存器:

1
P0=0x11;

阅读全文

STM32 I2S 总线简介

I2S 总线简介

I2S(Inter—IC Sound)总线是飞利浦公司为数字音频设备之间的音频数据传输而制定的一种总线标准,该总线专责于音频设备之间的数据传输,广泛应用于各种多媒体系统

阅读全文

STM32看门狗

看门狗的原理:单片机系统在外界的干扰下会出现程序跑飞的现象导致出现死循环,看门狗电路就是为了避免这种情况的发生。看门狗的作用就是在一定时间内(通过定时计数器实现)没有接收喂狗信号(表示 MCU 已经挂了),便实现处理器的自动复位重启(发送复位信号) 。

独立看门狗和普通的单片机一样,计数器从 0xFFF
递减计数,到0产生复位,其中计数时间可设置!也就是说在该时间内,喂狗一次,计数器又开始从 0xFFF
递减计数,不会产生复位,原理很简单。可在主函数,中断中喂狗。一旦单片机死机不执行喂狗时,就复位。

阅读全文

STM32中断分组管理总结


STM32有43个channel的settable的中断源;AIRC(Application Interrupt and Reset Register)寄存器中有用于指定优先级的4 bits。这4个bits用于分配preemption优先级和sub优先级,在STM32的固件库中定义如下
/ Preemption Priority Group ————————————————-/

阅读全文

单片机keil C中的data、bdata、idata、xdata、hdata、pdata、code解释

单片机keil C中的data、bdata、idata、xdata、hdata、pdata、code解释

8051系列有片内、片外程序存储器,片内、片外数据存储器,片内程序存储器还分直接寻址区和间接寻址类型,分别对应code、data、xdata、idata以及根据51系列特点而设定的pdata类型,使用不同的存储器,将使程序执行效率不同,在编写C51程序时,最好指定变量的存储类型,这样将有利于提高程序执行效率 ( 此问题将在后面专门讲述)。与ANSI-C稍有不同,它只分SAMLL、COMPACT、LARGE模式,各种不同的模式对应不同的实际硬件系统,也将有不同的编译结果。

阅读全文

STM32启动过程分析

当前的嵌入式应用程序开发过程里,并且C语言成为了绝大部分场合的最佳选择。如此一来main函数似乎成为了理所当然的起点——因为C程序往往从main函数开始执行。但一个经常会被忽略的问题是:微控制器(单片机)上电后,是如何寻找到并执行main函数的呢?很显然微控制器无法从硬件上定位main函数的入口地址,因为使用C语言作为开发语言后,变量/函数的地址便由编译器在编译时自行分配,这样一来main函数的入口地址在微控制器的内部存储空间中不再是绝对不变的。相信读者都可以回答这个问题,答案也许大同小异,但肯定都有个关键词,叫“启动文件”,用英文单词来描述是“Bootloader”。
无论性能高下,结构简繁,价格贵贱,每一种微控制器(处理器)都必须有启动文件,启动文件的作用便是负责执行微控制器从“复位”到“开始执行main函数”中间这段时间(称为启动过程)所必须进行的工作。最为常见的51,AVR或MSP430等微控制器当然也有对应启动文件,但开发环境往往自动完整地提供了这个启动文件,不需要开发人员再行干预启动过程,只需要从main函数开始进行应用程序的设计即可。但接触到嵌入内核比如Linux系统移植过程“bootloader”却是很重要也是必不可少的一个环节。事实上,每一种微控制器,无论性能高下,结构简繁,价格贵贱都是必须有启动文件才能正常工作的,它的作用同“bootloader”类似。启动文件完成了微控制器从“复位”到“开始执行main函数”中间这段时间的必要启动配置。

阅读全文