cathy的博客

单片机软件延时时间控制

cathy的头像

一、简述

记--通过代码方式实现软件延时(不精确延时)。

二、指令周期

单片机需要一个时钟信号送给内部各个电路,才能使它们有节拍地协同工作。时钟信号的频率是由外部震荡电路的晶振频率决定的。

外接晶振的频率 = 时钟信号的频率 = 工作频率。(如24MHz,12MHz,11.0592MHz)

震荡周期:为单片机提供时钟脉冲的振荡源的周期。

震荡周期 = 1/晶振频率          (如晶振频率是12MHz时,振荡周期 = 1/12MHz = (1/12)us)

机器周期:51系列单片机的一个机器周期由12个震荡周期组成。

机器周期 = 12 * 振荡周期      

(如晶振频率是24MHz时,振荡周期 = 1/24MHz = (1/24)us,机器周期 = 12*(1/24)us = 0.5us)

(如晶振频率是12MHz时,振荡周期 = 1/12MHz = (1/12)us,机器周期 = 12*(1/12)us = 1us)

单片机的内存分配(变量的存储位置)详解

cathy的头像

对于初学者而言,对单片机的内存分配往往最让人头疼,很多人学了单片机几年 都不知道单片机内部的内存使用情况是如何分配的。要了解 ROM(flash)、RAM(sram)启动,首先 需要对 链接器 Linker 如何分配内存有一定的了解。

STM32、GD32、ESP32的区别

cathy的头像

GD32 是国产单片机,据说开发人员来自ST公司,GD32 也是以 STM32 作为模板做出来的。所以 GD32 和 STM32 有很多地方都是一样的,不过 GD32 毕竟是不同的产品,不可能所有东西都沿用 STM32,有些自主开发的东西还是有区别的。

基于STM32环形队列来实现串口接收数据

cathy的头像

说在前面

码代码的应该学数据结构都学过队列。环形队列是队列的一种特殊形式,应用挺广泛的。因为有太多文章关于这方面的内容,理论知识可以看别人的,下面写得挺好的:STM32进阶之串口环形缓冲区实现。

代码实现

环形队列数据结构

typedef struct ringBuff{
    unsigned int in;               //写入的位置
    unsigned int out;              //读出的位置
    unsigned char buffer[RING_BUFF_SIZE];     //数据域
}stRingBuff;

写一字节数据到队列

STM32U575/585 功耗优化

cathy的头像

STM32U575/585 微控制器(MCU)基于具有 Arm® TrustZone®和 FPU 的高性能 Arm® 32 位 Cortex®‑M33CPU。这些 MCU 采用新型结构制造,得益于其高度灵活性和高级外设集,实现了一流的超低功耗性能STM32U575/585 器件可为应用实现极高的能效。

页面

订阅 RSS - cathy的博客