- 博客(11)
- 收藏
- 关注
原创 PID控制
PID控制原理模拟PID控制系统原理框图:系统由模拟PID控制器和被控对象组成。PID控制器是一种线性控制器,它根据给定值rin(t)与实际输出值yout(t)构成控制偏差 error(t)=rin(t)-yout(t)PID的控制规律为:kp–比例系数,Ti–积分时间常数,TD–微分时间常数比例环节:成比例的反映控制系统的偏差信号error(t),偏差一旦产生,控制器立即产...
2020-02-15 16:29:23
5667
原创 CAN通讯
CAN通讯1. CAN_Mode_Init该函数用于CAN的初始化,该函数带有5个参数,可以设置通信的波特率和工作模式等//CAN初始化//tsjw:重新同步跳跃时间单元.范围 :CAN_SJW_1tq~ CAN_SJW_4tq //tbs2:时间段 2的时间单元.范围 :CAN_BS2_1tq~CAN_BS2_8tq; //tbs1:时间段 1的时间单元.范围 :CAN_BS1_1t...
2020-02-06 20:02:06
547
原创 PWM实验
PWM工作过程PWM输出配置步骤使能定时器14和相关IO口时钟使能定时器14时钟:RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);使能GPIOF时钟,并配置PF9引脚映射至AF9,复用为定时器14RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);GPIOF9复用映射...
2020-02-06 19:07:20
391
原创 定时器中断
定时器配置1. TIM3时钟使能TIM3是挂载在APB1之下,所以通过APB1总线下的时钟使能函数来使能TIM3.调用函数为RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);2. 初始化定时器参数,设置自动重装值,分频系数,计数方式等定时器初始化函数:voidTIM_TimeBaseInit(TIM_TypeDef*TIMx, TIM...
2020-02-05 19:00:01
2647
原创 IWDG独立看门狗
看门狗作用在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的运行异常,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统陷入停滞状态,发生不可预料的后果,所以对单片机运行状态实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的模块或者芯片,俗称“看门狗"。在系统程序异常执行的情况,系统复位,程序重新执行。独立看...
2020-02-05 16:59:18
519
原创 NVIC中断优先级管理
中断管理方法首先,对STM32中断进行分组,组0~4(分配二进制位数)。同时对每个中断设置一个抢占优先级和一个响应优先级分组配置是在寄存器SCB->AIRCR中配置:抢占优先级&响应优先级区别(数值越大级别越低)高优先级的抢占优先级是可以打断正在进行的低抢占优先级中断的抢占优先级相同的中断,高响应优先级不可以打断低响应抢占优先级相同的中断,当两个中断同时发生的情况下,...
2020-02-04 21:33:55
1528
转载 C++位运算
运算符位逻辑运算符& (位 “ 与 ”)^ (位 “异或”)| (位 "或“)~ (位 ”取反“)移位运算符<< (左移). >> (右移)优先级位“与”、位“或”和位“异或”运算符都是双目运算符,其结合性都是从左向右的,优先级高于逻辑运算符(&&,||),低于比较运算符(+,-,*,/),且从...
2020-02-03 20:30:11
258
原创 C++结构体
初始化结构体当定义结构体变量时,可以通过两种方式初始化它:使用初始化列表或构造函数。初始化列表初始化结构体变量成员的最简单的方法是使用初始化列表。初始化列表是用于初始化一组内存位置的值列表。列表中的项目用逗号分隔并用大括号括起来。例如,假设已经声明了以下 Date 结构体:struct Date{ int day, month, year;};定义和初始化 Date 变...
2020-02-03 18:38:20
167
原创 GPIO工作原理
GPIO基本结构STM32的大部分引脚除了当使用外,还可以复用为外设功能引脚(比如串口)GPIO工作方式4种输入模式输入浮空输入上拉输入下拉模拟输入4种输出模式开漏输出(带上拉或者下拉)开漏复用功能(带上拉或者下拉)推挽式输出(带上拉或者下拉)推挽式复用功能(带上拉或者下拉)4种最大输出速度2MHZ25MHZ50MHZ100MHZ...
2020-02-02 17:54:05
340
原创 STM32库函数与寄存器
STM32库函数与寄存器库函数和寄存器的区别我们可以在库函数模板里面,直接操作寄存器,因为官方库相关头文件有寄存器定义。但是不能在寄存器模板调用库函数,因为没有引入库函数的相关定义了解寄存器基本原理的目的是为了让我们对STM32相关知识有比较深入的理解,这样在开发过程中方可得心应手。底层代码配置出了问题需要调试的话,必须对寄存器有一定的了解才能找到问题,因为调试代码,底层只能查看寄存器的相关...
2020-02-02 11:31:37
1612
原创 C++数据类型
C++数据类型1.C++基本类型类型关键字布尔bool字符char整型int浮点float/double字符串string无类型void宽字符型wchar_t修饰符类型关键字long长类型short短类型unsigned无符号类型signed有符号类型unsign...
2020-02-01 18:28:27
211
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人