- 博客(9)
- 收藏
- 关注
原创 freeRTOS使用删除任务函数vTaskDelete()遇到的坑
本人在学习时该函数是,使用当前任务删除别的任务时,发现执行vTaskDelete( )函数后,所有的任务均停止,而不是只停止被删除的函数。最后发现在使用vTaskDelete( )函数删除其它任务时,应该先任务的句柄进行判断。在freeROTS中,一个任务不能被删除两次,不然程序会跑飞。在删除任务后,也要手动将句柄赋值为NULL。传递对应的任务句柄删除对应的函数,当传入的是NULL时,删除该函数所在的任务。vTaskDelete()函数在其它任务中使用,传递的是自己的句柄。传递的时要删除任务的句柄。
2024-07-29 16:48:01 366
原创 day4:函数的传参
地址传参和值传参是常用的传参方式,但是两者也存在区别。使用值传参,函数会开辟一个新的空间给形参,实参传入给形参的值,会传入到新的空间储存,不会影响实参的值。如果使用地址传参,其实传递进来的是实参的地址,并不会开辟新的储存空间,会直接作用得到原来的实参中,从而改变实参的值。
2024-02-28 17:31:45 337
原创 day3:__weak关键字的作用
在学习stm32 HAL时,我们经常看到使用__weak来修饰函数,如常见的__weak HAL_Delay()函数,在HAL库中就是使用该关键字来修饰的。__weak的作用其实是声明弱函数。__weak修饰的函数,允许用户在相同的文件下,再定义一个名字一样的函数,如果我们定义的函数不用__weak的修饰,则编译器会优先编译我们定义的函数,并且不会报错。所以该关键字的作用就是“示弱”,看着我们好像定义两个一样的函数,其实有一个是弱函数,编译器并不会报错。
2024-02-22 21:37:14 655 1
原创 day2:指针常量和常量指针
要分清楚那个值不能被改变,我们只需要看const后面修饰的是什么。常量指针(const int * p)const后面修饰的是int * p,所以p不能被改变,这里的p是地址存放的值,所以值不能被改变;而指针常量(int *const p)const后面修饰的是p,所以p不能被改变,这里的p就是地址,也就是指针的指向。
2024-02-08 21:08:51 1593
原创 【无标题】
要分清楚那个值不能被改变,我们只需要看const后面修饰的是什么。常量指针(const int * p)const后面修饰的是int * p,所以p不能被改变,这里的p是地址存放的值,所以值不能被改变;而指针常量(int *const p)const后面修饰的是p,所以p不能被改变,这里的p就是地址,也就是指针的指向。
2024-02-08 20:56:00 1472
原创 C语言常见储存常量的方法(define、const)
但是使用宏的编译是发生在预编译的阶段的,预编译并不进行类型的检测。比如说,我们希望PI的值是3.14的浮点型,但是如果我们手误把它写成"hello world"字符串类型,它也是不会提示警告和错误的,这样程序安全性还不够高;但是这种方法有个很明显的缺点,那就是变量是可以改变的,在程序的运行中可能会遇到不易发现的bug或者自己的纰漏,造成程序运行的过程中,值发生变化,使得程序的运行结果出现了误差。如果一个变量被const修饰,那么它的值就不能再被改变,可以保护被修饰的东西,防止意外修改,增强程序的安全性。
2024-02-06 23:39:44 334
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人