• 最新文章
  • C语言
  • 51单片机开发
  • STM32单片机开发
  • Python入门
  • NumPy矩阵运算
  • SciPy数值计算

C语言嵌入式开发系统软件架构篇:中断服务程序

中断机制是指单片机在执行主程序时,发生外部事件A,请求单片机迅速处理(中断请求),单片机暂停当前的主程序(中断响应),保存当前断点数据,然后调用事件A的处理程序进行事件响应,事件A处理完成后,主程序恢复断点处的数据,并继续执行主程序。 例如在智能温控系统中,系统中的温度传感器会实时监测环境温度。如果没有中断机制,CPU 就需要不断地查询温度传感器的数据,非常耗费 CPU 的时间和资源,这种方式被称

C语言嵌入式开发系统架构篇:单任务与多任务

所谓“单任务系统”是指系统不能支持多任务并发操作,在同一时间内,系统仅能执行一个任务。。整个系统的运行就像一条有序的生产线,所有操作都按照预先设定的顺序依次执行 。在这个过程中,一个任务从开始执行到结束,期间不会被其他任务打断,只有当前任务完成后,系统才会接着执行下一个任务。 多任务开发,是指在一个系统中,允许同时处理多个任务的开发方式。在多任务开发环境下,系统能够将 CPU 时间合理地分配给各个

C语言嵌入式开发系统架构篇:模块划分

你有没有拼过乐高积木?乐高积木有各种各样的小块,例如长方形、正方形、三角形等等。每个小块都有特定的形状和功能,当你想要搭建一个城堡时,就会把不同形状的积木按照一定的规则组合起来,最终形成一个完整的城堡。这其中,每一块积木就像是一个模块,它们各自独立又相互配合,共同完成了搭建城堡的任务。 在 C 语言编程里,模块化编程也是类似的概念。当开发一个较为复杂的软件项目时,一般会把整个项目按照功能划分成一个

C语言:使用宏定义完成位运算

宏定义的主要作用是在预处理阶段进行文本替换,编译器会按照设定的规则,将代码中出现的宏名替换成对应的文本内容 。 先来看一个简单的例子——定义常量宏。在 C 语言中,定义常量宏使用#define关键字,通过#define关键字为一个常量赋予一个有意义的名字。假设正在开发一个涉及数学计算的程序,其中圆周率π是一个频繁使用的常量,为了提高代码的可读性和可维护性,可以这样定义:​ ​#define PI

程序员避坑指南:解读野指针

在 C 和 C++ 语言中,指针是一种特殊的变量,它存储的是内存地址。而野指针,简单来说,就是指向了 “不该指向” 地方的指针 。正常情况下,指针应该指向一块已经被分配且程序有权限访问的内存区域,这样我们才能通过指针安全地读取或写入数据。但野指针却打破了这种规则,它指向的可能是一块从未被初始化的内存空间。比如,当我们声明一个指针变量,却没有给它赋任何初始值时:​ int *ptr;​ *ptr =

51单片机编程:安装Keil开发工具,配置STM32固件库

搜索Keil官网,进入Keil官网网站,在Keil官网我们主要下载MDK-Arm和C51两个安装包,C51用于51系列单片机开发,MDK-Arm用于ARM指令架构的系列单片机开发。 分别下载C51和MDK-Arm到本地,先安装C51开发工具,C51安装完成后,再安装MDK-Arm(安装路径选择C51的安装路径)。 Keil安装完成后,并不支持STC51系列单片机的仿真调试,需要单独安装STC51系

C语言位操作与寄存器

C 语言位操作符运算符有按位与(&)、按位或(|)、按位异或(^)、按位取反(~)、左移(<<)、右移(>>) 。​ 按位与(&):两个操作数对应的二进制位都为 1 时,结果位才为 1,否则为 0。例如,3 & 5,3 的二进制是 0b0011,5 的二进制是 0b0101,进行按位与运算:0b0011 & 0b0101 = 0b0001,结

使用Proteus8仿真工具,零硬件成本学习51单片机嵌入式开发

Protues8 是由 Lab Center Electronics 公司开发的电子设计自动化(EDA)软件,在电子工程领域应用广泛。它将电路仿真、PCB 设计和虚拟模型仿真等功能集成于一体,为电子设计提供了一站式解决方案,特别适合用于 51 单片机的仿真实验,能有效降低开发成本,缩短开发周期。​ 在电路仿真方面,Protues8 支持模拟电路、数字电路以及混合信号电路的仿真。例如你想要设计一个简

C语言内存管理:静态内存

静态内存是指在编译时为程序变量分配的内存空间,并且这些内存空间在程序的整个生命周期内都保持不变。与堆内存不同,静态内存的分配和释放时间是固定的,它在编译阶段就已经确定好了,在程序的整个生命周期都不会变动。 在 C 语言中,静态内存主要包含全局变量、静态变量和常量这几种类型。下面通过具体的代码示例来了解它们。 全局变量,是在所有函数外部定义的变量,它具有全局作用域。只要程序在运行,全局变量就存在,并

C语言内存管理:堆内存

堆内存是一个允许开发者自由使用的内存区域,用于动态内存分配。在程序运行时,开发者可以根据实际需求,通过调用malloc、calloc、realloc等函数来申请堆内存空间,并且在不再需要这些内存时,使用free函数手动释放。 当开发者需要处理动态数据结构时,如链表这种数据结构,它的节点数量和每个节点的数据大小在编译时往往是不确定的,需要在程序运行时根据实际情况动态创建和销毁节点。此时,就需要使用堆