Uart、Usart、SPI、I2C通信

对比总结

特性 | UART | USART | SPI | I2C -- | -- | -- | -- | -- 同步/异步 | 异步 | 同步/异步 | 同步 | 同步 双工模式 | 全双工 | 全双工 | 全双工 | 半双工 线数 | 2线(TX/RX) | 3线(+SCLK) | 4线 | 2线(SDA/SCL) 速率 | ≤1Mbps | ≤4.5Mbps | 可达数十Mbps | ≤3.4Mbps 寻址方式 | 无 | 无 | 片选线 | 设备地址 典型应用 | 调试终端 | 智能卡 | Flash存储器 | 传感器

pid算法

基础原理

离散形式

//代码实现(c语言)typedef struct {    float Kp, Ki, Kd;    // PID参数    float integral;      // 积分累积量    float last_error;    // 上次误差} PID_Controller;​float PID_Calculate(PID_Controller *pid, float setpoint, float feedback) {    float error = setpoint - feedback;  //目标-反馈值    pid->integral += error;             //积分    float d_error = error - pid->last_error;    //误差-上次误差        // 计算输出(带限幅)    float output = pid->Kp * error + pid->Ki * pid->integral + pid->Kd * d_error;    output = (output > MAX_OUTPUT) ? MAX_OUTPUT : (output < -MAX_OUTPUT) ? -MAX_OUTPUT : output;        pid->last_error = error;    return output;}