FreeRTOS 事件组使用


FreeRTOS 中的事件组(Event Group)是一种轻量级的同步原语,用于在多个任务之间同步事件。时间组由一个 32 位的二进制数表示,每个二进制位表示一个事件位。可以使用时间组 API 操作事件组,包括设置事件位、清除事件位、等待事件位被设置等。 下面是一些时间组的常用 API: xEve

C语言 联合体


什么是联合体 C语言联合体(Union)是一种特殊的数据结构,和结构体(Struct)类似,但它的所有成员都共享同一块内存空间,即同一段地址。联合体中的不同成员可以访问同一段内存,因此一个联合体变量在不同时间内可以被视为不同数据类型。 联合体的定义方式与结构体类似,使用关键字union,其语法如下:

PID算法解析及C语言实现


PID算法分为两种: 位置式PID 增量式PID 位置式PID算的是当前控制系统应该输出的值,增量式PID算的是当前控制系统该输出值的变化值。 以下仅介绍增量式PID。 PID公式解析 PID公式: u(t) = K_p[e(t)+ {1\over T_i} \int_0^t e(t)dt + T_

STM32CubeMX SDIO DMA + FATFS


SDIO配置 4bit,其他参数均默认即可。 配置DMA 注意:memory 数据宽度最好配置为byte。如果配置为word,那么定义读写buff时需要相应的按四字节对齐,否则可能会出现数据偏移错误。 配置中断 SDIO global 中断

STM32CubeMX 配置USART串口DMA


CubeMX 配置 配置串口 配置DMA 配置中断

Cypress MCAL PORT模块配置


一、背景知识 1.关于Port PORT Driver会初始化MCU的整个端口结构,所有未配置的端口引脚都将使用Port Default Pin Configuration中的值进行初始化。 JLink接口必须正确配置,否则在Port初始化后,会导致无法下载程序。 2.Port 初始电平 非GPIO

Cypress MCAL Adc 模块配置


一、背景知识 1.Channel ID怎么计算 ADC channel ID = n + (64 m) Where, m is the SAR ADC number or SARMUX number. n is the address of the analog signal.For example

Cypress MCAL Gpt 模块配置定时器


示例:配置一个32bit定时器,频率1MHz,使能定时器溢出中断。 MCAL配置 GPT配置 GptChannelConfiguration下添加,如下配置: 如果不需要定时器溢出中断,则不勾选GptNotification。 其中GptChannelClkSrcRef 属性在GptClockRef

Cypress MCAL Pwm 模块配置


PWM模块仅为输出PWM,对于PWM输入捕捉应使用ICU模块。 MCAL配置 port配置 mcu配置 在MCU模块中配置好PWM的PCLK及相应的McuClockReferencePoint,并在PWM模块的PwmMcuClockReferencePoint 参数中关联,该时钟即为PWM时钟源。

Cypress MCAL Can 模块配置


MCAL配置 CanController配置 每路CAN配置一个CanController,一般参数如下: 这里需要关联波特率配置CanControllerBaudrateConfig及CAN时钟,其中时钟在MCU中配置。 CAN波特率参数配置: 对于普通CAN,只有General部分参数;对于CA