Toriyung

导航

2022年10月28日 #

关于struct和typedef

摘要: c/c++中有定义数据结构语句 struct student //定义数据结构体 { int a; //..... } struct student a1; //初始化变量 可以看到,定义结构体后每次进行初始化时都需要带上"struct",较为冗余 解决方法是重定义类型typedef //接上面代码 阅读全文

posted @ 2022-10-28 22:50 Toriyung 阅读(16) 评论(0) 推荐(0) 编辑

单片机补充知识

摘要: 工程的启动 系统开始执行时先执行启动文件中的复位系统,其中调用C库函数__main,其初始化系统变量,最后调用__rtentry,由__rtentry调用main()函数 阅读全文

posted @ 2022-10-28 22:45 Toriyung 阅读(16) 评论(0) 推荐(0) 编辑

多种程序的对比

摘要: 裸机程序 轮询:即顺序执行,定义一个死循环,循环内按顺序执行语句 前后台:即加入了嵌套中断的轮询,顺序语句为后台,中断为前台,中断产生时进行优先级高的中断内事件处理,但事件处理时间不能过长,过长会返回后台 多任务程序 多任务同样在中断中进行事件响应,但事件处理在任务中进行(每个任务是单独的不可返回的 阅读全文

posted @ 2022-10-28 22:45 Toriyung 阅读(24) 评论(0) 推荐(0) 编辑

void类型指针

摘要: void类型是不确定类型的指针,初始化时可以指向任何类型 int a = 1; int *b = &a; void *c = b; //初始化和赋值可以是任意类型指针 但取值操作时需要转换类型 printf("%d",*(int *)c); //取值时需要转换类型 阅读全文

posted @ 2022-10-28 22:25 Toriyung 阅读(21) 评论(0) 推荐(0) 编辑

数据结构整理笔记(未完)

摘要: 链表 本质上是一个结构体指向下一个结构体,第一个结构体为链头,重点是指向下一个(next)结构体 代码实现 创建链表 struct Element //链表元素 { char *name; struct Element *next; //名为next的结构体的指针 }; struct List // 阅读全文

posted @ 2022-10-28 22:15 Toriyung 阅读(24) 评论(0) 推荐(0) 编辑

两个循环区别:for(;;)和while(1)

摘要: C语言中死循环有两种常见方式: // 循环方式1 for(;;) { //执行语句 } // 循环方式2 while(1) { //执行语句 } 区别: for(;;)中的;;代表两个空语句,编译器会在编译时将其优化,直接进入循环;而while(1)存在一个判断语句--即是否为1,效率上稍逊于前者 阅读全文

posted @ 2022-10-28 21:16 Toriyung 阅读(124) 评论(0) 推荐(0) 编辑

freertos-内部机制:栈和寄存器变化

摘要: 首先为了不会绕晕,需要明确概念:寄存器是公用的,栈是私有的,因为寄存器轮着用所以才需要将寄存器值压入栈,当压入栈后,寄存器就可以进行值的更新。 创建任务 创建任务本质是伪造现场,由于之后的启动任务需要进行现场的保存,但在没有任务即任务现场不存在的情况下需要进行伪造。 具体是栈的创建分配和寄存器值的写 阅读全文

posted @ 2022-10-28 16:44 Toriyung 阅读(202) 评论(0) 推荐(0) 编辑