专注于嵌入式技术分享!
【工具】几款好用的文本编辑器 【工具】几款好用的文本编辑器
Source InsightSource Insight是一个面向项目开发的程序编辑器和代码浏览器,它拥有内置的对C/C++, C#和Java等程序的分析。能分析源代码并在工作的同时动态维护它自己的符号数据库,并自动显示有用的上
2019-11-11
【RT-Thread】IO设备模型及PIN设备 【RT-Thread】IO设备模型及PIN设备
RTT内核对象——设备RT-Thread有多种内核对象,其中设备device就是其中一种。 内核继承关系图如下: 设备继承关系图如下: device对象对应的结构体如下: 其中,设备类型type有如下几类: 设备的操作方法结构体:
2019-11-10
STM32F429的USB是个坑? STM32F429的USB是个坑?
最近某项目需要用到USB与CAN: 拿到这样的需求,我们当然是先得保证通讯正常。于是我找了一个USB例程与一个CAN例程,分别调试验证。 经过几番折腾已经保证了USB与上位机能正常通讯了,也能保证了CAN的正常收发(拿了两块开发板做验证
2019-11-05
【STM32】使用STM32内部Flash额外的空间来存储数据 【STM32】使用STM32内部Flash额外的空间来存储数据
STM32 芯片内部的 FLASH 存储器,主要用于存储我们代码。如果内部FLASH存储完我们的代码还有剩余的空间,那么这些剩余的空间我们就可以利用起来,存储一些需要掉电保存的数据。 本文以STM32103ZET6为例。STM32103Z
2019-10-13
【C语言】sizeof经典例子 【C语言】sizeof经典例子
sizeof基础在C语言中,sizeof是一个操作符(operator),而不是函数!其用于判断数据类型或者表达式长度(所占的内存字节数)。其有两种表达形式: (1)sizeof(类型说明符) (2)sizeof 表达式 我们通常使用
2019-10-09
【STM32】两块STM32之间的SPI主从通信实例(附代码工程) 【STM32】两块STM32之间的SPI主从通信实例(附代码工程)
之前分享过的SPI通讯实例:STM32硬件SPI主从通信,是基于一块STM32的两个SPI通讯。如果要进行两块STM32之间的SPI通讯,需要注意一些什么呢? 最近因为工作需要,要实现控制板之间的SPI通讯。两块STM32之间的SPI通讯
2019-10-08
常见的几种AD滤波算法 常见的几种AD滤波算法
在进行AD采样时,常常都会对采样数据进行滤波,以达到更好一点的效果。下面分享几种较简单而常用的滤波算法: 限幅滤波法限幅滤波法又称程序判断滤波法 。该方法根据经验判断,确定两次采样允许的最大偏差值(设为 A)每次检测到新值时判断:如果本次
2019-10-07
【C语言】一道简单但易错的C语言面试题 【C语言】一道简单但易错的C语言面试题
题目:分析以下代码,它的运行结果是? #include <stdio.h> int main(void) { int i = -1; if (i = 0) printf("
2019-09-30
【STM32】复用时钟何时开启呢? 【STM32】复用时钟何时开启呢?
STM32的AFIO时钟真的是在开启引脚复用功能的时候开启吗?其实并不是~ 什么是复用?我们知道,STM32有很多外设,这些外设的外部引脚都是与GPIO共用的。我们可以通过软件来配置引脚作为GPIO引脚还是作为外设引脚。当引脚配置为外设引
2019-09-26
【工具】把notepad++配置成一个能编译C代码的记事本 【工具】把notepad++配置成一个能编译C代码的记事本
前言本博客已经不只一次提过MinGW了,往期关于C语言方面的推文中,示例代码都是用Notepad++来编写,然后用MinGW中的gcc工具来编译。MinGW的配置及使用方法:【C语言笔记】使用notepad++、MinGW来开发C程序。M
2019-09-20
【STM32】ISP下载的原理是什么? 【STM32】ISP下载的原理是什么?
上一篇笔记分享了STM32的串口IAP实例:STM32串口IAP分享。其中,下载IAP程序时用ISP的方式进行下载。这里的ISP又是什么呢? ISP方式下载程序原理ISP:In System Programing,在系统中编程 在STM3
2019-09-17
【STM32】串口IAP分享 【STM32】串口IAP分享
什么是IAP?IAP是In Application Programming的首字母缩写,IAP是用户自己的程序在运行过程中对User Flash的部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信口对产品中的固件程序进行更新
2019-09-16
【C语言】易错、经典问题:return不可返回指向栈内存的指针 【C语言】易错、经典问题:return不可返回指向栈内存的指针
预备知识:内存的分类C/C++程序占用的内存分为两大类:静态存储区与动态存储区。其示意图如下所示: 数据保存在静态存储区与动态存储区的区别就是:静态存储区在编译-链接阶段已经确定了,程序运行过程中不会变化,只有当程序退出的时候
2019-09-06
【RT-Thread】内核对象模型 【RT-Thread】内核对象模型
RT-Thread中的对象有哪些?RT-Thread包括了很多不同类型的对象,如线程,信号量,互斥量等。在代码中,这些对象被汇总到一个枚举中(在rtdef.h中): enum rt_object_class_type {
2019-09-01
【C语言】代码优化的一些经验及小技巧(四) 【C语言】代码优化的一些经验及小技巧(四)
无限循环优先选用for(;;),而不是while(1)在C语言中,最常用的无限循环语句主要有两种:while(1)和for(;;)。从功能上讲, 这两种语句的效果完全一样。那么,我们究竟该选择哪一种呢? 其实,for(;;)语句运行速度要
2019-08-30
【RT-Thread】内核基础 【RT-Thread】内核基础
最近在工作中有用到多任务系统,趁热进行学习一下。这里我选择国产实时操作系统RT-Thread进行学习,因为现在很火呀。之前已经有简单地过了一遍RT-Thread,奈何学过地知识一旦不用,就会很容易地忘掉,所以应当多做一些学习笔记~ RT-
2019-08-30
【C语言】代码优化的一些经验及小技巧(三) 【C语言】代码优化的一些经验及小技巧(三)
循环展开简单的循环可以展开以获取更好的性能,但需要付出代码体积增加的代价。循环展开后,循环计数应该越来越小从而执行更少的代码分支。如果循环迭代次数只有几次,那么可以完全展开循环,以便消除循坏带来的负担。例如: for(i=0;
2019-08-29
【C语言】代码优化的一些经验及小技巧(二) 【C语言】代码优化的一些经验及小技巧(二)
函数相关1、参数的书写要完整参数的书写要完整,不要贪图省事只写参数的类型而省略参数名字。如果函数没有参数,则用void填充。例如: voidSetValue(intwidth,intheight); // 良好的风格
2019-08-28
10 / 15