- 博客(45)
- 收藏
- 关注
原创 4.19作业
1. 二进制信号量是只有两个状态(0和1)的信号量,用于互斥访问共享资源;二进制信号量适用于互斥访问临界区,计数型信号量适用于资源数量控制。5.根据文档和录屏学习一下软件定时器,了解软件定时器的作用和软件定时器和硬件定时器的区别。- 任务通知是一种轻量级的通信机制,用于任务间的事件通知和同步。5. 软件定时器的作用是在软件中实现定时功能,不依赖硬件定时器。1.总结二进制信号量和计数型信号量的区别,以及他们的使用场景。软件定时器的数量理论上没有限制,硬件定时器的数量有限制。软件定时器消耗的资源多。
2024-04-19 17:06:34
148
原创 4.18作业
动态创建任务:通过调用任务创建函数(如pthread_create)在运行时创建任务。- 运行状态和阻塞状态之间的转换:任务在执行过程中遇到阻塞事件,转换为阻塞状态。- 阻塞状态和就绪状态之间的转换:阻塞事件完成后,任务转换为就绪状态等待执行。- 静态创建任务:需要具体的栈同时提供栈的大小。- 就绪状态和运行状态之间的转换:任务从就绪状态转换为运行状态,开始执行。- 优先级调度算法:根据任务的优先级进行调度,优先级高的任务先执行。- 运行状态和完成状态之间的转换:任务执行完成后,转换为完成状态。
2024-04-18 16:50:22
253
原创 4.17作业
DMA+空闲中断的使用方式:DMA传输完成后触发空闲中断,处理接收到的数据。- DMA的作用:直接内存访问,用于高速数据传输,减轻CPU负担。- 接收数据:UART_ReceiveData()- 根据光敏电阻的值控制PWM输出,调节灯的亮度。- 发送数据:UART_SendData()- 通过ADC读取光敏电阻的值。
2024-04-17 18:37:05
76
原创 4.16作业
为每个GPIO引脚分配功能(输入、输出、复用等)- 生成代码并在代码中使用HAL库函数控制GPIO。- 生成代码后导入到Keil等IDE中进行编译。- 创建新工程时选择正确的芯片型号和工程路径。- 打开STM32CubeMX并创建新工程。- 确保选择正确的芯片型号和工程配置。- 在下载前检查连接器设置和下载选项。- 配置引脚分配、时钟设置和外设配置。- 配置引脚的速度、上拉/下拉等属性。- 检查工程设置和路径是否正确。- 配置正确的编译器和调试器。- 确保代码没有错误和警告。
2024-04-16 18:46:45
345
原创 3.25作业
2.定义自己的命名空间,其中有string类型的变量,再定义两个函数,一个函数完成字符串的输入,一个函数完成求字符串长度,再定义一个全局函数完成对该字符串的反转。第1个和第五个可以改变,第三个和第四个第七个不能改变。3.有以下定义,说明哪些量可以改变哪些不可以改变?
2024-03-25 19:47:13
153
原创 3.21作业
printf("\t\t============XXX 学生管理系统=============\n");printf("\t\t============1、添加学生信息=============\n");printf("\t\t============2、删除学生信息=============\n");printf("\t\t============4、查找学生信息=============\n");printf("\t\t============0、退出系统=============\n");
2024-03-21 20:50:09
440
原创 3.20作业
INSERT INTO work VALUES (1, '张三',24,15000);INSERT INTO work VALUES (2, '李四',25, 9999);INSERT INTO work VALUES (3, '王五', 26,8999);4.展示出工资在10000到20000之间的所有的工人的信息。1.创建一个工人信息库,包含工号(主键),姓名,年龄,薪资。2.添加三条工人信息(可以完整信息,也可以非完整信息)3.修改某一个工人的薪资(确定的一个)5.删除掉指定姓名的工人的信息。
2024-03-20 19:45:12
158
原创 TCP,机械臂测试
通过w(红色臂角度增大)s(红色臂角度减小)d(蓝色臂角度增大)a(蓝色臂角度减小)按键控制机械臂。查看Windows的IP:按住Windows+r 按键,输入cmd , 输入ipconfig。1)基于TCP服务器的机械臂,端口号是8888, ip是Windows的ip;0xff 0x02 x y 0xff 0xff:起始结束协议,固定的;x:指定要操作的机械臂 0x00 红色摆臂 0x01 蓝色摆臂。注意:关闭计算机的杀毒软件,电脑管家,防火墙。0x02:控制机械手臂协议,固定的;
2024-03-15 10:06:23
494
1
原创 数据结构:动态内存分配+内存分区+宏+结构体
1.定义一个学生结构体,包含结构体成员:身高,姓名,成绩;定义一个结构体数组有7个成员,要求终端输入结构体成员的值,根据学生成绩,进行冒泡排序。这是错误的,不能给数组赋值,数组名代表的是数组首地址,是一个常量,不能给常量赋值。这是错误的,不能给数组赋值,数组名代表的是数组首地址,是一个常量,不能给常量赋值。//申请一个10个int类型的堆区空间,并实现选择排序。//指针指向堆区申请的空间。{ //指针指向桟区申请的空间。{ //指针指向桟区申请的空间。
2024-02-20 18:33:20
747
1
原创 2.17作业
2.终端输入年月,需要考虑闰平年,判断该月有多少天(2月闰年29天,平年28天)5.使用循环求家目录下目录文件和普通文件的个数。echo 该月有${er}天。read -p "输入数字" -a arr。read -p "输入一个字符" var。read -p "输入月" month。echo ${year}是闰年。echo ${year}是平年。echo 该月有31天。echo 该月有30天。read -p "输入年" year。echo 目录文件有$sum1个。echo 普通文件有$sum2个。
2024-02-19 18:27:30
322
1
原创 2.15作业
①tar -c(v)f 要生成的文件.tar 要打包的文件····(多个文件中间以空格作为分隔)tar -cv(压缩参数)f 要生成的文件.tar.xz/gz/bz2 要打包的文件。指令1 | 指令2 | 指令3 | ·····借助tar指令,可以完成目录文件的压缩和解压缩。管道符左侧指令的输出用作管道符右侧指令的输入。head -n 文件名 回显文件的前n行。tail -n 文件名 回显文件的后n行。tar -x(v)f 要拆包的文件。-v:显示打包的过程。
2024-02-15 16:09:34
293
1
原创 2.14作业
权限的修改格式: chmod 权限用户 +、- 权限内容 目录名(文件名)sudo chown root:ubuntu 1 --->将文件1的所属用户改为root,所属组用户改为ubuntu。sudo chown root: 1 --->将文件1的所属用户和所属组用户都改为root。sudo chown :root 1 --->将文件1的所属组用户改为root。多个权限的修改: chmod u+x,g+x,o+x 3.c。只能修改文件的所属组。
2024-02-14 19:34:02
346
1
原创 2.13作业
sudo mount 挂载的分区 挂载点(已有的一个目录)---> 最好新建一个空目录。sudo mount /dev/sdb1 ~/hqyj //挂载到hqyj文件。取消挂载:既可以通过挂载点取消挂载,也可以通过挂载分区取消。mv 路径/文件 路径/目录名/重新命名的目录名。若U盘没有被挂载在具体的目录下时,是不能被查找到的。挂载的作业:对目录的操作相当于对磁盘的操作。mv 当前的文件位置 移动到哪个位置。对具体的分区进行格式化操作。将文件复制挂载到文件中去。3.查看磁盘的使用情况。
2024-02-13 18:37:36
411
1
原创 2.12作业
printf("交换后两数为:%d %d\n",*pa,*pb);printf("输入第一串字符:");printf("输入第二串字符:");printf("输入第一组数组:");printf("输入第二组数组:");printf("输入第一个数组:");printf("输入第二个数组:");printf("输入两个数:\n");printf("输入一串字符:");1.用指针实现strlen。2.用指针实现strcpy。3.用指针实现strcat。4.用指针实现strcmp。
2024-02-12 23:01:45
349
1
原创 2.11作业
1、若有以下说明语句:int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};17、设已定义char c[8]=”Tianjin”和int j,则下面的输出函数调用中错误的是(D)。19、设已定义char x[8]和int j,为了给该数组赋值,下面语句中正确的是(D)。C)数组x的长度大于数组y的长度 D)数组y的长度大于数组x的长度。14、若有以下程序段,该程序段的输出结果是(C)。
2024-02-11 19:28:54
332
1
原创 2.8作业
33.若有定义int x[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};34.若有说明:char *language[]={“FORTRAN”,”BASIC”,”PASCAL”,”JAVA”,”C”};28.若有定义:int x[10]={0,1,2,3,4,5,6,7,8,9},*p1;20.若有程序段:int a[2][3],(*p)[3];25.若有定义:int b[4][6],*p,*q[4];
2024-02-08 22:12:47
309
原创 2.7作业
/ 设置第六个bit位为1。// 设置第四个bit位为0。// 假设data初始值为0。已知数据data,给data的第六个bit位置1,对data的第4个bit位置0。// 要设置为1位置。// 要设置为0位置。{ // 将bitValue设为1。{ // 将bitValue设为0。
2024-02-07 19:26:41
329
1
原创 2.6作业
例子:int (*p1)(int,int)=my_add;例子:int s[1][2]={1,2,3,4};格式:返回值类型 (*数组名[下标](参数列表)例子:int (*s[2])(int, int);例子:char *name[4]={NULL};格式:返回值类型(*函数指针名)(形参列表)格式:数据类型(*数组指针名)[列宽]格式:数据类型*指针数组名[下标]不能返回局部变量的地址。1.strcat函数。2.封装strcmp。返回值是一个指针类型。
2024-02-06 18:47:56
327
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人