自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 读书《掌控习惯》讲解3

就像自己带着自己的小孩学习打羽毛球,小孩学的还不错,但因为咱们自己水平有限,很难达到更高的水平,这时候请一个厉害的教练,这个教练带来的关于之前的打球的习惯的变更,也会是很痛苦,但是是可以提高水平的上限的,所以并不是一个习惯的好坏是固定不变的,随着时间的变化,总是会有可能出现转变的。,很多人都说走出自己的舒适圈,其实是一个道理,不要做完全会的东西,也不要挑战自己够不到的东西,这样都不容易坚持。,对于习惯的选择,可以因人而异,我们每个人善长的内容是不一样的,比如身高比较高的人更适合打篮球,而不是举重。

2024-08-31 00:44:05 353

原创 git的基本操作

git rebase是将之前的几条commit合并为一条,减少git的节点数,用法如下。git config --global user.email “邮箱”git config --global user.name “用户名”git config user.email "邮箱"12.开始修改全局仓库的用户名和邮箱。//查看全局仓库下用户名和邮箱。//修改全局仓库下用户名和邮箱。//查看本目录下仓库的用户名。//修改本目录下仓库的用户名。//修改本目录下仓库的邮箱。//查看本目录下仓库的邮箱。

2024-08-29 23:36:58 454

原创 读书《掌控习惯》讲解2

一个有趣的例子,美国部门专门有人研究设计防止核战争的策略,刚开始的一个事实是,总统掌握着发射核弹的密码,可以任意时间,地点,只要确认发射,即可在千里之外,下令发射核弹,打击到想打击的区域,以此可能会导致大量的无辜群众的伤亡。比如我想深度工作,不想每天浪费时间,可以下载一个app,用番茄时钟法来是自己坚持25分钟,然后收获一个番茄,一段时间之后,可以明显的看到自己的深度工作的时间会越来越长,有的app是有统计自己过去的一段时间的番茄时钟的功能的,看着这个统计表,是很有成就感,并且可以更加促进自己进步。

2024-08-29 23:31:37 995

原创 读书《掌控习惯》讲解1

一个提示过于隐蔽,则不容易被发现,甚至很多天都想不起来还有这么一件事情,一个习惯自己曾经说要坚持,例如学习吉他,吉他弹完之后,将其擦拭完毕,收拾到了一个角落里,然后你会发现,接下来三天都没发现它,也就忘记了还有这回事情,所以将吉他放在客厅的显眼的位置,是一个使其显而易见的做法。比如决定减肥,约定每天晚上九点开始跑步,到了时间之后,闹钟响了,就是第一步,获得了提示,然后你产生了第二步,立马去跑步的渴求,接下来是第三步,给出反应,去跑步,接下来是第四步,在跑步之后,产生自我的认可,是一种奖励。

2024-08-27 23:50:53 783

原创 精通C语言-sizeof-面试题4

func是一个函数指针,跟其余的指针是一样的,都是在64位系统中是8个字节,32位系统中为4个字节。在所有的系统中,函数名的sizeof的结果都是1个字节。以上,sizeof的面试相关的问题都整理完了,后续有更新会再加进来,如果把所有4篇的内容都看完了之后,应该是能覆盖所有的sizeof相关问题了。

2024-08-27 00:03:52 244

原创 精通C语言-sizeof-面试题3

sizeof(&arr1 + 1) = 8 bytes ,跳到了整个数组后边的位置,不建议这么用,但结果是个指针。sizeof(&p + 1) = 8 bytes ,跳过p指针的地址,还是个指针,但是指向了未知的位置。sizeof(p + 1) = 8 bytes ,跳到第二个元素的位置,即b的位置,但是个指针。sizeof(&p[0] + 1) = 8 bytes,取了第一个元素的位置,然后跳转到第二个元素的指针。

2024-08-24 23:59:33 589

原创 精通C语言-sizeof-面试题2

答案:sizeof(test_S3)=0bytes,在32位和64位系统中,运行结果都为0,据说会有运行结果为1的时候,我的gcc版本和环境为gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.3) ,这个环境中可以确认结果为0。这个地方需要注意一下,sizeof是在编译的时候就计算好结果的,所以sizeof(i++)是不会使i在运行的时候+1的,所以最后的结果,显示的i为3,而不是4。注意,在32位系统中以4个字节对齐,64位系统中以8个字节对齐。

2024-08-24 01:44:50 439

原创 keil代码优化配置

keil配置代码优化

2024-08-19 22:44:19 1534

原创 精通C语言-sizeof-面试题1

在32位系统中,结果为:(gcc编译的时候,-m32可以编译为32位的代码,-m64可以编译为64位代码,默认是64位的代码,所以可以不加-m64)还有比较特殊的,void为1,然后‘a’在C语言中,默认为int型数据,并不是表面上看起来的字符类型。可以看到,32位机器,不管是x86还是arm,结果是一致的。

2024-08-08 01:26:57 379

原创 嵌入式、机器人相关的运行环境和代码编译方法

各种环境的代码的编译方法汇总

2024-07-30 00:11:11 232

原创 RTOS-任务切换

100行代码实现了RTOS的任务切换的最小功能集

2024-01-28 18:15:59 1160

原创 RTOS-进出中断栈操作说明

在Cortex-M3的内核中,R13为堆栈指针sp,其可以取两个值,一个为MSP,为主堆栈指针,另一个为PSP,为进程堆栈指针。MSP在上电后默认使用,即在main函数中,默认会一直使用,以及在进入中断后,要求必须使用MSP,而在RTOS的任务运行过程中,一般使用PSP,这样可以防止任务堆栈指针出错后,不影响中断服务程序的运行,是一种保护机制。执行上一节里的代码,可以跟踪到PSP始终为0,R13的值一直和MSP的值一致,不管是在main函数中,还是在中断函数中,如下所示。

2024-01-22 21:48:31 1084

原创 RTOS-PendSV中断使用

在主流的rtos中,都是使用了pendsv来进行任务的切换,在Cortex-M3权威指南中具体介绍了任务切换的几种历史的方法,之前有用systick中断来做的,但是由于和其余的中断的优先级的冲突,主要是在中断的过程中,不能进行任务的切换,否则会影响堆栈的切换。按照之前STM32的专栏里介绍的新建汇编文件的方式,新建一个汇编文件,然后参照上边的寄存器地址,定义三个函数,分别为pendsv的中断处理函数,这个函数后续需要做任务切换,暂时只做一些寄存器的操作,用于观察现象。分别如下,在135页有中断触发寄存器。

2024-01-21 16:55:14 979

原创 stm32的printf使用

在刚开始学习C语言的时候,都使用过printf函数,支持的格式比较齐全,相打印什么样的信息都比较好实现。在使用STM32的过程中,也可以使用printf函数,printf函数是C语言stdio的库里定义好的函数,或者在stm32中,推荐勾选use microlib库,printf函数调用了fputc函数,这个函数也在库里被“弱定义”了,弱定义指的是如果有在其他地方重新定义,则使用重新定义的函数,若没有找到,则使用之前“弱定义”好的函数。在startup.s文件中,就弱定义了很多函数,都可以重新被定义,如下。

2024-01-15 22:41:38 4153 1

原创 STM32代码中变量定义后的放置的位置

写一个如下所示的代码,可以查看各种类型的变量的存储位置。还需要看一下map文件,先确认一下各个区域的范围。可以看出主要分为以下4个区域。

2024-01-14 22:38:39 973 1

原创 STM32汇编程序闪烁LED灯1

原因是在reset handler中,首先调到了__main函数中,这个函数不是main函数,而是在C库中(默认不带micro lib编译的时候),这个函数主要的作用就是内存初始化,包括将初始化过的可读写的全局变量和静态变量拷贝到内存对应的区域,初始化那些初始化为0的静态变量和全局变量,然后将栈顶地址和堆地址设置好,之后跳转到main函数,在这个过程中可能会碰到一个BKPT 0xAB的地方,是内核调试的一个相关指令,导致程序出问题,编译为microlib就可以避免这个问题。

2024-01-11 21:10:58 669

原创 STM32新建汇编工程2

然后直接新建工程,新建完工程后,再去之前的工程中,只将startup_stm32f10x_hd.s文件拷贝过来,放置到新建的工程目录下,然后在界面中加入已经存在的文件,然后新建一个main.s文件,将上篇文章中的代码拷贝过来,如下图。上一篇文章里写了新建工程的过程中,使用了keil提供的文件,也可以不使用,自己手动拷贝,这样工程会更简单一些,只需要拷贝启动文件一个即可,如下界面里不做选择。由于没有系统时钟配置部分的c代码,需要修改启动代码中调用了系统时钟初始化的部分,注释掉即可,如下图。

2024-01-11 20:53:13 377

原创 STM32新建汇编工程1

之前做汇编比较少,再想深入学习rtos的时候,需要先熟悉一下汇编,方便后续在rtos中写一部分任务切换的代码,也可以深入了解单片机的底层运行原理。

2024-01-11 20:45:05 491

原创 关闭Ubuntu20.04自动休眠

关闭ubuntu休眠

2022-10-31 14:29:00 750

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除