09 2018 档案
摘要:https://www.cnblogs.com/qsyll0916/p/8127925.html挺不错的。。记录下
阅读全文
摘要:现代操作系统基本都是多任务操作系统,即同时有大量可调度实体在运行。在多任务操作系统中,同时运行的多个任务可能: 都需要访问/使用同一种资源 多个任务之间有依赖关系,某个任务的运行依赖于另一个任务 这两种情形是多任...
阅读全文
摘要:枚举类型的大小是4,和一个int整形大小一样 就是最后一个逗号后面的表达式的值,比如:int a=1,b;b=(a+1,a+2,a+3);那么b的值就是a+3,也就是4 函数名 :printf 函数原型:in...
阅读全文
摘要:下面是三个变量的声明,我想使用typedef分别给它们定义一个别名,请问该如何做?>1:int *(*a[5])(int, char*);>2:void (*b[10]) (void (*)());>3. dou...
阅读全文
摘要:C代码 //#include #include typedef int (*FP_CALC)(int, int); //注意这里不是函数声明而是函数定义,它是一个地址,你可以直接输出add看看 in...
阅读全文
摘要:原理:单片机的TXD、RXD是TTL电平,所...
阅读全文
摘要:推挽输出:可以输出高,低电平,连接数字器件。 输出 0 时,N-MOS 导通,P-MOS 高阻,输出0。 输出 1 时,N-MOS 高阻,P-MOS 导通,输出1(不需要外部上拉电路)。 开漏输出:输出端相当于三极管的集电极. 要得到高电平状态需要上拉电阻才行. 适合于做电流型的驱动,其吸收电流的能
阅读全文
摘要:STM32的位带操作是基于cortex内核自带的,而不是st公司独创。基本的思路就是用一个32位的地址空间访问一个bit,因为stm32只支持32位数据的读取,不像51单片机一样,是可以单独对一位操作的。因此,arm开发了位带技术,以提高位操作的速度。stm32中SRAM地址范围=0x2000 00
阅读全文
摘要:在官方的库文件中,分别有如下文件: R8T6使用的MD.s,中容量的arm芯片,大致的启动内容如下: 初始化堆栈指针 SP 初始化程序计数器指针 PC 设置堆、栈的大小 设置中断向量表的入口地址 配置外部 SRAM 作为数据存储器 调用 SystemInit() 函数配置 STM32 的系统时钟 设
阅读全文
摘要:参见: https://www.cnblogs.com/zxtp/p/4938742.html https://blog.csdn.net/gatieme/article/details/50708495 https://blog.csdn.net/d_leo/article/details/530
阅读全文
摘要:理论上,CM3中规定上电后CPU是从0地址开始执行,但是这里中断向量表却被烧写在0x0800 0000地址里(Flash memory启动方式),那启动时不就找不到中断向量表了?既然CM3定下的规矩是从0地址启动,SMT32当然不能破坏ARM定下的“规矩”,所以它做了一个启动映射的过程,就是和芯片上
阅读全文
摘要:STM32三种启动模式对应的存储介质均是芯片内置的,它们是: 1)用户闪存=芯片内置的Flash。2)SRAM=芯片内置的RAM区,就是内存啦。3)系统存储器=芯片内部一块特定的区域,芯片出厂时在这个区域预置了一段Bootloader,就是通常说的ISP程序。这个区域的内容在芯片出厂后没有人能够修改
阅读全文
摘要:#include /* pf(void) pf是一个无参数函数 * pf(void) pf是一个无参数函数,它的返回值是一个指针 ( * pf(void) ) (void) pf是一个无参数函数,它的返回值是一个无参数函数的指针 * ( * pf(void) )...
阅读全文
摘要:#include #include typedef int (*FP_CALC)(int,int);//定义一个函数指针类型 int add(int a, int b) { return a + b; } int sub(int a, int b) { return a - b; } int mul(int a, int b) { return a * b; ...
阅读全文
摘要:#include char arraysearch(int data) { //some code return (data+2); } char linkedlistsearch(int data) { //some code return (data-2); } char binarysearch(int data) { //some code return (d...
阅读全文
摘要:CPU流水线的探秘之旅 【计算机系统】指令流水线 可以参考上面的两个博客文章。
阅读全文
摘要:#include char arraysearch(int data) { //some code return (data+2); } char linkedlistsearch(int data) { //some code return (data-2); } char binarysearch(int data) { //some code return (d...
阅读全文
摘要:think like a programmer剑指offer算法设计指南算法图解算法枕边书支持处理器的技术——永无止境的速度追求程序是怎样跑起来的C语言核心技术C语言点滴C语言实用之道嵌入式C编程:PIC单片机和C编程技术与应用C指针:基本概念、核心技术及最佳实践C嵌入式编程设计模式C现代编程:集成
阅读全文
摘要:运行结果: data in ram 0x0028ff10 = 2data in ram 0x0028ff30 = 1data in ram 0x0028ff14 = 2data in ram 0x0028ff34 = 1data in ram 0x0028ff50 = 5data in ram 0x
阅读全文
摘要:一,预编译 一,预编译 一,预编译 一,预编译 操作步骤:gcc -E hello.c -o hello.i 主要作用: 处理关于 “#” 的指令 【1】删除#define,展开所有宏定义。例#define portnumber 3333 【2】处理条件预编译 #if, #ifdef, #if, #
阅读全文
摘要:x/<n/f/u> <addr> n、f、u是可选的参数,<addr>表示一个内存地址 1) n 是一个正整数,表示显示内存的长度,也就是说从当前地址向后显示几个地址的内容 2) f 表示显示的格式 3) u 表示将多少个字节作为一个值取出来,如果不指定的话,GDB默认是4个bytes,如果不指定的
阅读全文
摘要:最近在STM的GPIO结构体定义中看到源代码的时候,顺便复习下结构体指针变量的定义及typedef 的使用。 1.结构体类型定义 定义方式1: 定义方式2: 以上两个定义方式是等价的,是将 *LinkList 定 义为 struct LNode 类型,即 LinkList 被定义为一个类型名。这样就
阅读全文
摘要:1 #include 2 #include 3 #include 4 5 struct node 6 { 7 int data; 8 struct node *pNext; 9 }; 10 11 //新建node 12 struct node * create_node(int data) 13 { 14 struc...
阅读全文
摘要:#include #include #include struct node{ int data; struct node *pNext;};//新建nodestruct node * create_...
阅读全文
摘要:1 #include 2 #include 3 #include 4 5 int main(int argc, char* argv[]) 6 { 7 struct data 8 { 9 int i; 10 char c; 11 int j; 12 int arr[2]; 13 };...
阅读全文
摘要:#include #include #include /* So, when you are working with image headers, binary headers, and network pac...
阅读全文
摘要:#include #include #include /* So, when you are working with image headers, binary headers, and network pac...
阅读全文
摘要:#include #include #include /* So, when you are working with image headers, binary headers, and network pac...
阅读全文
摘要:程序源自《C指针:基本概念核心技术及最佳实践》第四章的字符串数组一节#include #include #include void freestrmemory(char** arr, int length);i...
阅读全文
摘要:如果两个指针指向同一个数组,它们就可以相减,其结果为两个指针之间的元素数目。
阅读全文
摘要:#include //只能是单词之间一个空格int words(char string[]){ int result = 0, i = 0; while(string[i] != 0) { if(string...
阅读全文
摘要:冒泡排序在一组需要排序的数组中,对两两数据顺序与要求顺序相反时,交换数据,使大的数据往后移,每趟排序将最大的数放在最后的位置上,数据的变化像冒泡一样往上升的。#include void printArray(in...
阅读全文
摘要:基本思想:在要排序的一组数中,选出最小(或者最大)的一个数与第1个位置的数交换;然后在剩下的数当中再找最小(或者最大)的与第2个位置的数交换,依次类推,直到第n-1个元素(倒数第二个数)和第n个元素(最后一个数)...
阅读全文
摘要:https://www.tuicool.com/articles/v2A3mm——Win8下用DOSBox编写汇编语言http://www.dosbox.com/http://www.masm32.com/htt...
阅读全文
摘要:就就是你用BSRR和BRR去改变管脚状态的时候,没有被中断打断的风险。也就不需要关闭中断。This way, there is no risk that an IRQ occurs between the rea...
阅读全文