STM32串行FLASH文件系统FatFS移植

FatFS文件系统介绍

简要介绍

文件系统,它是为了存储和管理数据,而在存储介质建立的一种组 织结构,这些结构包括操作系统引导区、目录和文件。常见的 windows 下的文件系统格式 包括 FAT32、NTFS、exFAT。在使用文件系统前,要先对存储介质进行格式化。格式化先 擦除原来内容,在存储介质上新建一个文件分配表和目录。这样,文件系统就可以记录数 据存放的物理地址,剩余空间。

LCD12864(带字库的)使用教程

一、LCD12864液晶显示屏简介

在我们常用的人机交互显示界面中,除了数码管、LED,有一种12864液晶屏用的比较多。 顾名思义,12864表示其横向可以显示128个点,纵向可以显示64个点。

手把手教你上手Proteus仿真C51单片机

Proteus简介

Proteus软件是英国Lab Center Electronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是比较好的仿真单片机及外围器件的工具。虽然国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。 Proteus是英国著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DSPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MATLAB等多种编译器。

Hugo增加Mermaid插件,显示流程图

在头部代码中增加开关

在文章头部,增加mermaid:true开关

1
2
3
4
5
6
7
---
title: "hugo支持绘图"
isCJKLanguage: true
date: 2020-10-13 22:24:53
...
mermaid: true
---

在模板中添加支持js代码

在你的主题文件夹中,找到文章模板,添加下面的js代码, 例如我的模板位置:

STC的51单片机使用FwLib_STC8库

介绍

FwLib_STC8 是一个针对STC8G, STC8H系列MCU的C语言封装库, 适用于基于这些MCU的快速原型验证.

GITEE项目地址: https://gitee.com/iosetting/fw-lib_-stc8

GITHUB项目地址: https://github.com/IOsetting/FwLib_STC8

为什么要写 FwLib_STC8

如果直接用寄存器开发, 在不同的MCU之间切换就会感觉到每次写都像是第一次写, 都得去查手册去计算, 还容易出错, 费时费力. 把一些先验知识代码化, 就能简化这个过程, 用一次的时间节省将来无数时间.

Stc8h单片机驱动嗡鸣器

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
sbit BUZZ = P2^3; //蜂鸣器控制引脚
int i=0;
unsigned char T0RH = 0;	   //T0重载值高字节
unsigned char T0RL = 0;	   //T0重载值低字节
sbit k2=P2^7;
//延迟函数
void delay_ms(unsigned int m)
{
int  a, b;

for(a=0;a<5000;a++)
for(b=0;b<m;b++);

}
		 
/* 蜂鸣器启动函数,frequ-工作频率 */
void OpenBuzz(unsigned int frequ)
{
	unsigned int reload; //计算所需的定时器重载值
 
	reload = 65536 - (11059200/12)/(frequ*2); //由给定频率计算定时器重载值
	T0RH = (unsigned char)(reload >> 8); //16 位重载值分解为高低两个字节
	T0RL = (unsigned char)reload;
	TH0 = 0xFF; //设定一个接近溢出的初值,以使定时器马上投入工作
	TL0 = 0xFE;
	ET0 = 1; //使能 T0 中断
	TR0 = 1; //启动 T0
}

/* 蜂鸣器停止函数 */
void StopBuzz()
{
	ET0 = 0; //禁用 T0 中断
	TR0 = 0; //停止 T0
}

/* T0 中断服务函数,用于控制蜂鸣器发声 */
void InterruptTimer0() interrupt 1
{
	TH0 = T0RH; //重新加载重载值
	TL0 = T0RL;
	BUZZ = ~BUZZ; //反转蜂鸣器控制电平
}

调用