- 博客(66)
- 资源 (2)
- 问答 (1)
- 收藏
- 关注
原创 RTES - 2 - Assignment 1 - Hello World ! - Simple thread Creation
real time embedded system's concepts and principles
2022-07-24 17:01:09 403
原创 Question 2 - 大端和小端的区别以及用法选择
文章目录1. 为什么会出现大小端2. 端“endian”的起源以及大小端使用现状3. 大小端模式引发的问题3.1 问题一:不同模式机器间通信3.2 问题二:我们看到的字节的顺序不一定是它真实的顺序3.3 问题三:强制类型转换(cast)或者联合体(union)中3.3.1 延伸,由此使用cast或者union来判断机器是哪种模式1. 为什么会出现大小端假设我们有个int变量x, 它的地址是0x100,即&x = 0x100.如果在32位系统上,那么x的值就存储在地址0x100, 0x101.
2022-05-15 22:50:17 491
原创 Question 1 - signed char和unsigned char的区别
问题:为什么char也有signed unsigned呢?快速理解为了理解上面的问题,我们首先来看signed和unsigned的区别:有符号数和无符号数的差别其实就是表达的数值范围的差别,有符号数可以表示正负数,而无符号数只能表示正数。比如说unsigned char的数值范围是 [0, 255],即[0, 2^8-1],而signed char的数值范围是[-128, 127], 即[-2^4, 2^4-1].如果有符号数的出现是为了计算,那为什么char也需要有计算呢?最经典的例子,就是
2022-05-15 16:03:57 245
原创 函数递归以及经典问题
文章目录函数递归的定义和优缺点经典问题函数递归的定义和优缺点定义:程序调用自身的行为就是递归。优点:为具有某些特征的编程问题提供了简单的策略。(后面会提到一些经典的编程问题)缺点:层层调用,算法的复杂度就会很高,会过快地消耗计算机的内存资源,不方便阅读和维护。使用条件(我理解为需要收敛):明确存在限定条件每次递归越来越逼近条件经典问题递归求斐波那契数列递归和非递归分别实现求第n个斐波那契数输入输出示例输入:5输出:5采用递归的方法int Fib(int n).
2022-05-13 22:54:43 157
原创 M1上CS:APP实验环境搭建
Step1: 下载DockerDocker下载地址安装好后打开DockerStep 2:打开终端,切换到自己想要放置的路径,输入以下命令,拉取镜像文件docker pull xieguochao/csapp完成后可以看到images里出现我们拉取的文件Step3:配置自己的container在上图image的最右侧可以看到“run”的按钮,点击后可以生成一个新的container。上面的配置参数中:Container Name可以随意填写Ports可以随意填写Host Pat
2022-05-10 23:17:31 658
原创 疫情期间对自我学习的一些思考
由于疫情,已经在家办公两个月了。我其实从一开始,对在家办公就抱有积极态度——节省了每天两小时的通勤时间,作息更加规律,也有很多时间用于自我学习。可是学什么呢?要学的太多,反而没有头绪。19年3月毕业以来,我始终有紧迫感。研究生期间,因为一直在做对企业的项目,期间有过连续一个月调试,中饭晚饭都是点外卖,项目紧,任务重,留下了腰椎间盘突出的毛病,也耗尽了我对写代码的热情。校招的时候,坚决不找软件开发岗,于是去了MS做技术支持。我本身是个外在性格外向,内在性格内向的人[这点对于这份工作来说是致命弱点,会在说了
2022-05-04 20:41:31 317
原创 Lecture 4 - More control flow. Input and output.
文章目录课程知识点课程知识点1. goto语句Error Handler: 像C++和或者Java,当遇到error的时候它们会提供exception接口。C语言中可以通过goto语句来实现从多重判断里直接退出到error handler里。但是一般我们不用goto语句,首先它不利于debug,其次所有用goto语句写的code我们都可以用别的if else之类的来替代。在我接触到的产品code里,因为项目非常庞大,确实在code style里面明确声明不能使用goto语句,以防止后期代码维护.
2022-05-02 19:57:02 604
原创 Lecture 3 - Control flow. Functions and modular programming. Variable scope. Static and global varia
文章目录课程知识点课后练习课程知识点1. extern关键字Enables access/modifying of global variable from other source files2. 多个.c文件一起gcc编译 e.g. gcc -g -O0 -Wall diophant.c euclid.c -o diophant.o3. variable scope 变量作用域variables declared outside of a function have global.
2022-05-01 19:14:58 388
原创 Lecture 2 - Variables and datatypes, operators
文章目录课程知识点课后练习课程知识点signed 和unsigned的区别【疑问】如果它们只是表示范围的不同,只体现在算术表达式上的差别的话,为什么char也有unsigned的格式啊?大端和小端的问题Big endian: the most significant bits(MSBs) occupy the lower address.网络中常常使用大端,所以它也被成为网络orderLittle endian: the least significant bits(LSBs) .
2022-04-30 17:03:07 430
原创 Lecture 1 - Introduction. Writing, compiling, and debugging C programs. Hello world.
课程重点速记C is a low-level language. low-level is also known as machinelevel language.gdb on MAC M1 gdb is not support, but you can use lldb.strings stored as character arraynull-terminated (last character in array is ‘\0’ null) not writen explici
2022-04-17 22:09:54 515
原创 Lecture 2 - Shell Tools and Scripting
the missing semesterLecture 2 - Shell Tools and Scripting
2022-04-05 00:11:12 396
原创 Lecture 1 - Course Overview + The Shell
为什么要学习这门课程:官方的说法:To take full advantage of the tools your computer provides, wehave to go old-school and drop down to a textual interface: TheShell.我的感受:工作后的办公环境肯定离不开Linux系统,对Shell的熟练操作可以提高工作效率。知识点汇总常用的命令missing-semester % dateFri Apr 1 19:50:16
2022-04-01 23:35:15 596
转载 使用HAL库、STM32CubeMX和Keil 5开发入门教程:GPIO
一、API说明HAL库一共包含如下6个IO操作函数: 1、读取某个引脚的电平状态: HAL_GPIO_ReadPin() 2、写入某个引脚的电平状态: HAL_GPIO_WritePin() 3、翻转某个引脚的电平状态: HAL_GPIO_TogglePin() 4、锁定某个引脚的配置状态(直到下次复位): HAL_GPIO_LockPin() 5、外部中断服务函数: HAL_G
2017-12-26 10:33:11 12552 1
原创 最小二乘法
///<summary> ///用最小二乘法拟合二元多次曲线 ///</summary> ///<param name="arrX">已知点的x坐标集合</param> ///<param name="arrY">已知点的y坐标集合</param> ///<param name="length">已知点的个数</param> ///<param nam
2017-12-19 13:35:06 343
原创 STM32——CAN总线通信
1、CAN网上没有主机从机之分(当然你主观上可以分),任何节点都随时可以发送,碰撞检测由硬件完成,发生碰撞会自动重发; 2、接收端只要在过滤器中设置自己需要接收的帧ID就可以接收,收到后会自动发送应答帧。收到后总线上的信号就不存在了,否则影响后面的发送了。 3、没有任何从“机收”到时(即没有收到应答),发送端会收到错误信息。总线上的信息会消失。 CAN组网不是基于地址,而是基于发送的消
2017-12-19 11:59:27 1089
原创 Unity3D _脚本之间通信
脚本之间的通信有几种。1.利用在脚本A中定义对外接口函数,然后在脚本B中找到A所在的对象,再找到脚本A,进而调用里面的对外接口函数,这个方法在我的《unity3D NGUI中button响应事件实现》这篇文章中有仔细说明,可以参考。 2.还有一个是利用SendMessage的方法来实现脚本互相通信。 首先在A脚本中编写对外接口函数,如下所示:using UnityEngine; using
2017-12-19 10:27:23 4271
原创 Unity3d_can't add the script component "" because the script class cannot be found
原因:文件名与文件内容中的类名不相符。
2017-12-11 18:28:40 17510 2
原创 C#_1_初探
Console.WriteLine()和Console.Write()的区别,是前者自动换行,但是后者不换行C# 强大的编程功能虽然 C# 的构想十分接近于传统高级语言 C 和 C++,是一门面向对象的编程语言,但是它与 Java 非常相似,有许多强大的编程功能,因此得到广大程序员的亲睐。下面列出 C# 一些重要的功能:布尔条件(Boolean Conditions)自动垃圾回收(Auto
2017-11-03 11:33:46 380
原创 Unity3D_touch事件和点击事件
现在要实现鼠标点击在哪个位置,物体就朝向哪里运动。所以是将两个部分融合到一起:1,物体的运动;2,鼠标的点击。if (Input.GetMouseButtonDown (0)) { //0在PC上表示鼠标的左键,在手机上表示落下的第一个手指头,以此类推,好像最多支持五个手指头 print("按下"); } else if (Input.GetMouseButton (0))
2017-09-13 12:36:32 8944
原创 Unity3D_直线运动
Unity3D中内置方法有六个:void Awake() 脚本唤醒,系统执行的第一个方法,在脚本中仅执行一次void Start() 在Awake()之后,在Update()之前执行,在脚本中仅执行一次void Update() 系统会在每一帧自动执行该方法,常见的控制任务移动也是写这个方法void LateUpdate() 在Update() 之后执行,同上,也是每一帧系统自动执
2017-09-13 10:21:44 2310
原创 Unity3D_椭圆算法
原理:首先要明白椭圆是怎么来的。有两个同心圆,半径分别为R,r。以这两个圆不断旋转可以得到椭圆的坐标。代码如下:public class ellipseCS : MonoBehaviour { public GameObject cubeModel; private float r = 3; private float R = 5; private float angle
2017-09-13 09:49:36 3848
原创 Unity3D_圆环算法
以cube为预制件,不断旋转复制,就形成了圆环。具体代码:public class circleCS : MonoBehaviour { public GameObject cubeModel; private float r=5; private float angle = 0; // Use this for initialization void Start () { V
2017-09-13 09:22:44 1525
原创 Unity3D_楼梯算法
最简单的45°楼梯和任意角度楼梯45°的楼梯可以先建立一个预制件,然后通过预制件复制元件。void Start () { for (int i=0; i<10; i++) { GameObject pedal = (GameObject)GameObject.Instantiate (pedalPrefab); pedal.transform.position =
2017-09-12 09:55:25 2551
原创 Unity3D_元件的复制
比如在跑酷游戏当中,人跑到前面去了,后面的人物就要销毁掉,这样就能够保证内存的稳定。所以要动态生成物体。所以得用代码来生成。通过prefab的门、窗户、地面、墙,将这些搭建起一座房子,将房子保存为prefab。用代码生成多个房子。void Start () { for (int i=0; i<10; i++) { GameObject house = (GameObjec
2017-09-11 19:21:53 420
原创 Unity3D_组合体和预制件
首先,动态创建物体,以动态创建一个cube为例,代码如下void Start () { GameObject cube = GameObject.CreatePrimitive (PrimitiveType.Cube); cube.transform.position = new Vector3 (-3,-1,0); cube.transform.localEulerAngle
2017-09-11 17:01:08 3029
原创 STM32——由CAN调试想到的调试过程总结
经历了前前后后大概一个半月的时间,总算把实验室自制电路板的CAN总线调通。过程真的应该记录一下。调试过程:首先在现有电路板的基础上,一上手肯定是先写程序。实验室原来的程序都是基于HAL库编写的,可是我只熟悉标准库。一开始我侥幸地认为,两个库混用应该没有什么问题。就直接建立了can的驱动文件,但是用了很长时间,CAN还是没有调通,甚至回环测试都没有通过。接下来我就陷入了不
2017-08-31 12:20:18 993
原创 Linux——系统分区之分区与格式化
分区类型主分区:最多只能有4个:由硬盘的结果决定的 每个扇区512个字节 446个字节用来记录存储信息 剩下的64个字节用来进行分区表示 所以只能最多表示4个 每个16字节扩展分区:最多只能有1个 强制概念主分区加扩展分区最多有4个不能写入数据,只能包含逻辑分区逻辑分区格式化的概念格式化(高级格式化)又称逻辑格式化。它是指
2017-08-27 18:25:59 489
原创 STM32——学习中注意事项
1.书写中断函数的时候,比如在stm32f10x_it.c中,voidEXTI15_10_IRQHandler(void),名字一定不能写错,不然虽然编译的过程中不会出错,实际运行起来该函数还是不会执行!!!!
2017-08-08 10:51:28 507
转载 什么是示波器?示波器的使用方法图解
摘要: 示波器,“人”如其名,就是显示波形的机器,它还被誉为“电子工程师的眼睛”。它的核心功能就是为了把被测信号的实际波形显示在屏幕上,以供工程师查找定位问题或评估系统性能等等。它的发展同样经历了模拟和数 … (adsbygoogle = window.adsbygoogle || []).push({}); 示波器,“人”如其名,就是显示波形的机器,它还被誉为“电子工程师的眼睛”。它的核心
2017-07-25 22:00:19 8459
转载 STM32——优先级NVIC_PriorityGroupConfig的理解及其使用
STM32的优先级NVIC_PriorityGroupConfig的理解及其使用 写作原由:因为之前有对stm32 优先级做过研究,但是没时间把整理的东西发表,最近项目需要2个串口,但是不是两个串口同时使用,只是随机使用其中一个,程序对2个串口的优先级需要配置;此文思路:“中断优先级”思维导图–>关键要点—>结合图和要点相关程序应用例程讲
2017-07-23 18:47:58 2045
原创 (3)基础学习:渲染
渲染的时候我们通常会使用F9快捷键,但是F9有个不好的地方就是,它默认的是渲染前一个视图,也就是说:如果你之前渲染的是透视图,那么按键F9就一直出来的是透视图的渲染,不能选择改到主视图或者其他视图。所以可以选择使用,移动菜单栏,拉到最后,会发现出现一个茶壶的图标,这个是快速渲染的标志,渲染前鼠标选中了哪个视图,就会相应的渲染哪个视图。一般的,保存成.tif格式,因为这是厂家生产
2017-07-23 10:02:25 551 4
原创 (2)基础入门:了解扩展体
3d的现成基本体,又叫做扩展体。在13个扩展体中,一般最常用的是切角长方体。作出一个切角长方体后,在参数修改中可以修改对应的长宽高和切角,其他图形的参数修改亦是如此。为了修改切角的平滑度,需要修改切角的分段数,一般不多不少,最好的分段数是5。在图中的左视图中可以看到角度变得很平滑了。
2017-07-23 09:16:17 522
原创 (1)开始尝试,”凉亭”制作
这是首次接触3dsMax,所以非常的基础,只是简单的使用了一些按键,做出了一个看起来像凉亭的东西第一步:做出底座,如下图:第二步:做出四根柱子。主要学习了复制和平移这两个功能。第三步:做出凉亭的顶部,如下:整体第一次尝试下来,最主要的感受就是,一定要知道做什么线画什么图的时候,找到在哪个视图中完成。以上,之后相信会越来越深入的!
2017-07-23 09:02:03 630
转载 单片机应用程序架构
工作中经过摸索实验,总结出单片机大致应用程序的架构有三种:简单的前后台顺序执行程序,这类写法是大多数人使用的方法,不需用思考程序的具体架构,直接通过执行顺序编写应用程序即可。 时间片轮询法,此方法是介于顺序执行与操作系统之间的一种方法。 操作系统,此法应该是应用程序编写的最高境界。下面就分别谈谈这三种方法的利弊和适应范围等。 一、顺序执行法 这种方法,这应用程序比较简单,实时
2017-07-20 20:54:21 732
转载 STM32——同程序更换芯片时,需要修改的地方
【作者】:LinCoding【时间】:2016.11.4 起稿 2016.11.10 修改【声明】:转载、引用,请注明出处 11月4日发表的这篇博客被推到了首页,但是这是笔者第一次发博客,格式什么的比较乱,这几天也很忙,所以今天有空,就把格式重新调整一下,大家看着也舒服,真心觉得这个是很实用的。尤其是对于初学者来说。 因为笔者只用过STM32
2017-07-19 14:39:40 25124 2
转载 STM32——CAN总线系列
简介:CAN是Controller Area Network 的缩写(以下称为CAN),是ISO国际标准化的串行通信协议。由德国电气商博世公司在1986年率先提出。此后,CAN通过ISO11898及ISO11519进行了标准化。现在在欧洲已是汽车网络的标准协议。CAN协议经过ISO标准化后有两个标准:ISO11898标准和ISO11519-2标准。其中ISO11898是针对通信速率为125Kbp
2017-07-18 16:12:41 1098
STM32F103串口接蓝牙总是发送了一段数据就不再发送了
2017-08-10
TA创建的收藏夹 TA关注的收藏夹
TA关注的人