摘要: 下面分享关于位操作的一些笔记: 一、位操作简单介绍 首先,以下是按位运算符: 在 中,常常需要对一些寄存器进行配置,有的情况下需要改变一个字节中的某一位或者几位,但是又不想改变其它位原有的值,这时就可以使用按位运算符进行操作。下面进行举例说明,假如有一个8位的TEST寄存器: 当我们要设置第0位bi 阅读全文
posted @ 2019-11-27 13:07 zhengnianli 阅读(4062) 评论(0) 推荐(0) 编辑
摘要: RTT内核对象——设备 RT Thread有多种内核对象,其中设备device就是其中一种。 内核继承关系图如下: 设备继承关系图如下: device对象对应的结构体如下: 其中,设备类型type有如下几类: 设备的操作方法结构体: I/O设备模型框架 RT Thread 提供了一套简单的 I/O 阅读全文
posted @ 2019-11-10 23:11 zhengnianli 阅读(2114) 评论(0) 推荐(0) 编辑
摘要: 因为STM32的FLASH擦写次数有限(大概为1万次),所以为了延长FLASH的使用时间,我们平时调试时可以选择在SRAM中进行硬件调试。除此之外,SRAM 存储器的写入速度比在内部 FLASH 中要快得多,所以下载程序到SRAM中的速度较快。 所以我们很有必要建立两个版本的工程配置,在SRAM中调 阅读全文
posted @ 2019-10-21 20:00 zhengnianli 阅读(1995) 评论(1) 推荐(0) 编辑
摘要: 上一篇笔记分享了STM32的串口IAP实例: "STM32串口IAP分享" 。其中,下载IAP程序时用 的方式进行下载。这里的ISP又是什么呢? ISP方式下载程序原理 ISP:In System Programing,在系统中编程 在STM32F10xxx里有三种启动方式: 以ISP方式下载程序时 阅读全文
posted @ 2019-09-18 08:46 zhengnianli 阅读(7473) 评论(0) 推荐(1) 编辑
摘要: 什么是IAP? 是`In Application Programming`的首字母缩写,IAP是用户自己的程序在运行过程中对User Flash的部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信口对产品中的固件程序进行更新升级。 在重新编程过程中可以使用任意类型的通信协议,如UART 阅读全文
posted @ 2019-09-17 09:07 zhengnianli 阅读(3091) 评论(0) 推荐(0) 编辑
摘要: 什么是线程? 人们在生活中处理复杂问题时,惯用的方法就是 ,即把一个大问题分解成多个相对简单、比较容易解决的小问题,小问题逐个被解决了,大问题也就随之解决了。同样,在设计一个较为复杂的应用程序时,也通常把一个大型任务分解成多个小任务,然后通过运行这些小任务,最终达到完成大任务的目的。 在裸机系统中, 阅读全文
posted @ 2019-09-11 08:41 zhengnianli 阅读(5392) 评论(0) 推荐(1) 编辑
摘要: 1、 define define是预处理指令,在编译时不进行任何检查,只进行简单的替换 宏定义的一般形式为: 这里所说的字符串是一般意义上的字符序列,不要和C语言中的字符串等同,它不需要双引号。 2、typedef typedef是在C语言中用来为复杂的声明定义简单的别名,它本身是一种存储类的关键字 阅读全文
posted @ 2019-09-09 20:15 zhengnianli 阅读(2016) 评论(0) 推荐(0) 编辑
摘要: 预备知识:内存的分类 C/C++程序占用的内存分为两大类: 与`动态存储区`。其示意图如下所示: 数据保存在静态存储区与动态存储区的区别就是:静态存储区在 阶段已经确定了,程序运行过程中不会变化,只有当程序退出的时候,静态存储区的内存才会被系统回收。动态存储区是在程序运行过程中动态分配的。 在其它地 阅读全文
posted @ 2019-09-09 13:00 zhengnianli 阅读(1403) 评论(0) 推荐(1) 编辑