电赛赛后总结
电赛赛后总结 本次电赛采用MSP430F5529作为主控,做了2台寻迹小车。最后评测时并没能实现之前已经调好的功能,主要原因我认为是评测场地和学校的场地摩擦力还是差别有点大,导致主车在第三问转到内圈时转不过去。之前从车速度调高了之后老是跑出黑线外,在评测这边却没有出现该问题,导致从车会跟主车的距离过近。 虽然结果一般,但是我还是学到了一些东西: 1.传感器采集数据我之前那种宏定义的方法不太好,会多次重复读取,读取一次把各个传感器的数据放到一个数组里,再把该数组宏定义会更好。 2.寻迹的PID不一定只要P,可以加上D,会加速调整。 3.传感器采集数据可以不放在while1里,而放在一个ms级别的定时器中断内,这样可以保证采样周期一直不变。 4.尽量所有环节都闭环,如果最后那个主车用的是灰度的转弯办法应该就可以到内圈了…
01 常用Shell命令
常用Shell命令1、目录信息查看命令ls ls -a 显示目录所有文件及文件夹,包括隐藏文件,比如以.开头的 ls -l 显示详细信息,比如是否可读、可写、可执行 2、目录切换命令cd 3、当前路径显示命令pwd 4、系统信息查看命令uname 5、清理屏幕命令clear 6、显示文件内容命令cat 7、切换用户身份命令sudo 8、文件拷贝命令cp 9、切换用户命令su 10、移动文件命令mv,也可用作重命名 11、创建文件夹命令mkdir 12、创建文件命令touch 13、删除命令rm 14、目录删除命令rmdir 15、显示网络配置信息命令ifconfig 16、重启命令reboot 17、关机命令poweroff 18、系统帮助命令man 19、数据同步写入磁盘命令sync 20、查找文件命令find 21、查找内容命令grep 22、文件夹大小查看命令du 23、磁盘空间检查命令df 24、使用gedit打开某个文件命令gedit 25、当前的系统进程查看命令ps 26、进程实时运行状态查看命令top 27、文件类型查看命令file
02 QMake的基本用法
QMake的基本用法QMake是和CMake类似的项目组织工具,不过比CMAKE简单不少 官方文档:https://doc.qt.io/qt-5/qmake-manual.html 本地的Qt安装目录也有,和官方文档一致 1.QMake添加源/头/UI等文件12345678910111213SOURCES += \ $$files(UserAPP/Src/*.cpp) \ $$files(UserAPP/Src/*.c) \# main.cpp \# mainwindow.cppHEADERS += \ $$files(UserAPP/Inc/*.h)# mainwindow.hINCLUDEPATH += UserAPP/Inc/FORMS += \# ...
07 模板编程
模板 C++的泛型编程利用的主要就是模板 模板主要分为函数模板 和 类模板 一、函数模板函数模板的作用: 建立一个通用的函数,其返回值和形参类型可以不具体确定,用一个虚拟的类型来代表。 1.语法:12345678template<typename T>//声明一个模板,告诉编译器后边的T是一个通用数据类型//函数的声明/定义void swap(T &a,T &b){ T temp = a; a=b; b=temp;} template:关键字,声明创建模板 typename:关键字,可以用class替代,表面其后面的符号是一种数据类型 T:通用的数据类型,也可换成其他的符号 2.注意: 如果把函数的声明和实现分别放到.h和.cpp中,则要写两次template template< >仅对紧跟的一个函数的声明或者定义有效,如果要写多个函数模板,则要写多次template< > 3.使用方法123456//1.自动推导数据类型int...
串口通信进制问题
串口通信进制问题由于UART一般通信帧是8 bit,所以通常以ASIIC码的形式进行传输,但也可以用一位16进制数来进行传输。 常见的串口助手默认发送的都是字符型比如’5’,或者说ASIIC码的形式,如果要发送16进制数,需要选择16进制发送,比如要发0xFF,串口助手这里发送写成FF就行,但单片机的的if中必须写成0XFF Python发送16进制数先用bytearry打包,然后serial.write就行了
蓝牙
...
FreeRTOS_命名规则
FreeRTOS(1)命名规则1. 命名规则RTOS内核和演示例程源代码使用以下规则: > 变量uint32_t:前缀 ul,u 表示 unsigned,l 表示 long uint16_t:前缀 us,s 表示 short uint8_t:前缀 uc,c 表示 char 非 stdint 类型的变量使用前缀 x,比如基本的 Type_t 和 TickType_t 类型 非 stdint 类型的无符号变量使用前缀 ux,比如 UbaseType_t(unsigned BaseType_t) size_t 类型的变量使用前缀 x 枚举类型变量使用前缀 e 指针类型变量在类型基础上附加前缀 p,比如指向 uint16_t 的指针变量前缀为 pus char 类型变量前缀为 c char * 类型变量前缀为 pc 举例: 12size_t xQueueSizeInBytes;uint8_t * pucQueueStorage; > 函数在文件作用域范围的函数前缀为 prv(一般定义是 static) API 函数的前缀为它们的返回类型,当返回为空时,前缀为...
事件
事件当LVGL发生某些用户可能感兴趣的事件时,系统做出相应的响应。实际上根据具体情况调用相应的回调函数。STM32的中断也可看成是一种事件 LVGL中的事件包括以下几类: 输入设备事件(Input device events):对象被按下、滚动、聚焦…. 绘图事件(Drawing events) 其他事件(Special events):对象被删除、样式等被更改….. 特殊事件(Other events):对象的值被更改(滑块移动)、一个过程完成 自定义事件(Custom events) 具体的看官方文档 1.给对象添加事件1234567static void my_event_cb(lv_event_t * event){ printf("Clicked\n");}lv_obj_t * btn = lv_btn_creae(lv_scr_act());lv_obj_add_event_cb(btn, my_event_cb, LV_EVENT_CLICKED, NULL); /*Assign an event...
FreeRTOS_常用API
FreeRTOS(3)常用API==FreeRTOS中任务优先级数值越大,优先级越高,和HAL库相反== 1.创建任务1234567891011121314BaseType_t xTaskCreate( TaskFunction_t pxTaskCode, //任务函数 const char * const pcName, //任务名字 const uint16_t usStackDepth, //任务堆栈大小 void * const pvParameters, //传递给任务函数的参数 UBaseType_t uxPriority, //任务优先级 TaskHandle_t * const pxCreatedTask ) //任务句柄//pxTaskCode : 任务函数 //PCName :...
HAL串口中断
HAL串口中断1.每次使用串口中断前必须初始化一下1HAL_UART_Receive_IT(&huart1, (uint8_t *)RxBuffer,LENGTH);//指定缓冲区以及触发中断的长度 ==每次中断后都得在用一次该语句,不然就只能触发一次中断,第一次中断前初始化时也要写这句== 2.串口发送函数12HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout) 功能:串口发送指定长度的数据。如果超时没发送完成,则不再发送,返回超时标志(HAL_TIMEOUT)。 参数: UART_HandleTypeDef *huart UATR的别名 如 : UART_HandleTypeDef huart1; 别名就是huart1*pData 需要发送的数据Size 发送的字节数Timeout ...








