摘要: 信号量 信号量&互斥量: 创建、获取、释放、删除 信号量用于同步,任务间或者任务和中断间同步; 互斥量用于互锁,用于保护同时只能有一个任务访问的资源,为资源上一把锁。 二值信号量:同步 计数信号量:资源使用统计 互斥量:互斥信号量其实就是一个拥有优先级继承的二值信号量递归互 斥:互斥中嵌套互斥 优先 阅读全文
posted @ 2023-09-19 12:06 爱吃冰激凌的黄某某 阅读(21) 评论(0) 推荐(0) 编辑
摘要: 系统内存管理 内存管理与程序好坏? 对于安全要求高的应用,尽可能不使用动态内存分配。 malloc()和free() 当RTOS内核需要RAM时,调用pvPortMalloc()函数来代替malloc()函数。当RAM要被释放时,调用vPortFree()函数来代替free()函数。 freeRTO 阅读全文
posted @ 2023-09-19 12:06 爱吃冰激凌的黄某某 阅读(8) 评论(0) 推荐(0) 编辑
摘要: 系统时钟管理 HAL_Delay()延时 HAL_Delay(1000); //延迟一秒 如果主函数中还有一些耗时操作, 那么实际耗时为: 1秒+耗时操作时间 vTaskDelay() 相对延时 每次从任务执行函数vTaskDelay()开始, 延时指定时间结束 vTaskDelayUntil() 阅读全文
posted @ 2023-09-19 12:06 爱吃冰激凌的黄某某 阅读(18) 评论(0) 推荐(0) 编辑
摘要: freeRTOS 任务状态切换 eTaskGetState 获取状态 printf("status %zd\n", osThreadGetState(osThreadGetId())); osThreadSuspend 挂起 osThreadSuspend(osThreadGetId()); 阅读全文
posted @ 2023-09-19 12:06 爱吃冰激凌的黄某某 阅读(23) 评论(0) 推荐(0) 编辑
摘要: freeRTOS 任务控制函数 osThreadCreate 任务创建函数 osThreadTerminate osThreadTerminate(任务对象) 任务结束函数 task1 只打印了一次 获取任务ID printf("id = %d\n", osThreadGetId()); print 阅读全文
posted @ 2023-09-19 12:06 爱吃冰激凌的黄某某 阅读(43) 评论(0) 推荐(0) 编辑
摘要: 搭建freertos工程 项目配置 再Add一个任务 printf打印fputc添加 阅读全文
posted @ 2023-09-19 12:06 爱吃冰激凌的黄某某 阅读(11) 评论(0) 推荐(0) 编辑
摘要: 学会单片机仿真调试Debug 打印调试 仿真调试 阅读全文
posted @ 2023-09-19 12:05 爱吃冰激凌的黄某某 阅读(26) 评论(0) 推荐(0) 编辑
摘要: OTA功能设计 芯片划分 芯片开头一块划分为: bootloader 后面一些划分为: 应用程序数据 bootloader区地址不变, 那么通过网络就可以远程修改应用程序区数据实现OTA OTA流程 1通过WIFI模块将100k的更新数据发送到STM32芯片 2STM32芯片分为BOOT引导程序区, 阅读全文
posted @ 2023-09-19 12:05 爱吃冰激凌的黄某某 阅读(41) 评论(0) 推荐(0) 编辑
摘要: 实战: USB鼠标 新建项目Embeded_USB 打开时钟晶振 打开Debug 打开USB PA12 PA11 自动打开 打开USB协议栈 修改时钟晶振 项目配置 Feil5 代码编写 JLink配置 项目运行 1项目编译, 下载后, 用usb连接到芯片安卓接口 2到桌面查看运行情况 阅读全文
posted @ 2023-09-19 12:05 爱吃冰激凌的黄某某 阅读(9) 评论(0) 推荐(0) 编辑
摘要: RTOS介绍 概念 RTOS: 实时操作系统 RTOS提供的事件驱动型设计方式,使得RTOS只是在处理实际任务时才会运行,这能够更合理的利用CPU。在实际项目中,如果程序等待一个超时事件,传统的无RTOS情况下,要么在原地一直等待而不能执行其它任务,要么使用复杂(相对RTOS提供的任务机制而言)的状 阅读全文
posted @ 2023-09-19 12:05 爱吃冰激凌的黄某某 阅读(66) 评论(0) 推荐(0) 编辑
摘要: 了解STM32串口通讯 TTL 原理图 RS232 原理图 串口 差分: 对比一根线发送一根线接收, 抗干扰能力更强 485舵机 阅读全文
posted @ 2023-09-19 12:05 爱吃冰激凌的黄某某 阅读(20) 评论(0) 推荐(0) 编辑
摘要: 学会单片机STM32的IIC通信 开发过程中如何选择什么样的通讯接口 通讯接口如何使用 为何需要I2C 用途 12C只有两条线一条串行数据线:SDA,一条是时钟线SCL,使用SCL, SDA这两根信号线就实现了设备之间的数据交互,它方便了工程师的布线。因此,I2C总线被非常广泛地应用在EEPROM, 阅读全文
posted @ 2023-09-19 12:05 爱吃冰激凌的黄某某 阅读(40) 评论(0) 推荐(0) 编辑
摘要: 学会单片机STM32看门狗 HAL_Delay(x); x>100ms 看门狗重启 x<100ms 持续运行 阅读全文
posted @ 2023-09-19 12:05 爱吃冰激凌的黄某某 阅读(13) 评论(0) 推荐(0) 编辑
摘要: 数据结构 malloc 不能在裸机中使用, 有操作系统可以 阅读全文
posted @ 2023-09-19 12:04 爱吃冰激凌的黄某某 阅读(14) 评论(0) 推荐(0) 编辑
摘要: Google测试框架 阅读全文
posted @ 2023-09-19 12:04 爱吃冰激凌的黄某某 阅读(7) 评论(0) 推荐(0) 编辑
摘要: 串口打印print函数 int fputc(int ch, FILE *f) { HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 1000); return ch; } 阅读全文
posted @ 2023-09-19 12:04 爱吃冰激凌的黄某某 阅读(28) 评论(0) 推荐(0) 编辑
摘要: 定时器 HAL_Delay 定时 HAL_Delay(1000); //延时1秒 缺点: 这一秒不能做其他事情 tim 定时中断 优点: 可以在延时时做一些其他的事情 阅读全文
posted @ 2023-09-19 12:04 爱吃冰激凌的黄某某 阅读(9) 评论(0) 推荐(0) 编辑
摘要: GPIO 输出控制 IO 修改 1Pull-up: 上拉, 那么PA11内部和3..3v连接就是high; 2Pull-down: 下拉, 那么PA11内部和GND连接就是low; 用杜邦线将A11和GND相联,就是低 用杜邦线将A11和3.3v相联, 就是高 阅读全文
posted @ 2023-09-19 12:04 爱吃冰激凌的黄某某 阅读(14) 评论(0) 推荐(0) 编辑
摘要: IO外部中断 cubemx 上拉, 用杜邦线, 将PA11连接GND,将打印gpio is input cubemx 下拉, 用杜邦线, 将PA11连接V3.3,将打印gpio is input 阅读全文
posted @ 2023-09-19 12:04 爱吃冰激凌的黄某某 阅读(11) 评论(0) 推荐(0) 编辑
摘要: Zlog日志 注释控制日志打印 //printf("app start\n"); printf("app start\n"); printf("app start\n"); //printf("app start\n"); printf("app start\n"); //printf("app s 阅读全文
posted @ 2023-09-19 12:04 爱吃冰激凌的黄某某 阅读(55) 评论(0) 推荐(0) 编辑