
STM32
包含FreeRtos的学习和一些遗漏知识的补充
Invinciblenuonuo
这个作者很懒,什么都没留下…
展开
-
FreeRtos学习笔记------------延时函数
FreeRtos的延时函数一、绝对模式vTaskDelayUntil() 绝对模式延时函数保证延时时间严格但中断会打断函数导致延时时间变化。二、相对模式vTaskDelay() 相对模式延时函数使用前将INCLUDE_vTaskDelay 置 1相对模式的延时时间不精确,根据情况不同延时时间会变化。...原创 2021-02-18 16:05:12 · 471 阅读 · 0 评论 -
如何快速理解模糊PID---(二)
模糊控制规则上文只介绍了误差这一个输入量,我们可以用相同的方法对误差的变化率这一输入量进行模糊化。模糊控制规则主要有两种,Mamdini和T-S型模糊控制器这里只介绍Mamdini型模糊控制器Mamdini型模糊控制器就是一堆“如果 x是U1 y是U2 那么 z是W1”的语句组成先上图设误差为E,误差的变化率为EC,而输出量我们也用上文的方法将他划分出六个区域,并规定出它的模糊论域(NB,NM,NS,Z0,PS,PM,PB)例如我们规定输出也是介于 (- 90 , + 90) 之间的原创 2021-02-09 14:46:18 · 7787 阅读 · 6 评论 -
如何快速理解模糊PID算法 ---(一)
一、前言想通过此文章够快速理解模糊PID的前提条件是:已经了解PID控制算法,并且利用该算法控制过一些玩意。这篇文章是我参考了四篇学位论文之后写下的,如果有错误,恳请各位大佬批评指正,后面我也会提到这几篇论文关于模糊PID的不足(不全面)的地方。二、传统PID的缺点以及为什么我们要使用模糊PID使用过PID的同学都知道,PID控制器是一个简单但是控制效果非常好的算法。PID算法有很多种类,包括位置式,增量式,单级,串级等等。如果参数整定的好,那么在一定的情况下,PID控制器是可以做到非常不错的原创 2021-02-09 04:26:02 · 16793 阅读 · 3 评论 -
FreeRtos学习笔记-------------------串口控制CAN控制的电机
一、实现的功能能够接收串口输入的数据数据范围设定为 0 — 65535,并设置超出范围设置错误提示利用freertos任务向电机发送数据利用串口控制电机位置二、功能实现省略基础配置首先构建电机增量式位置环float PID_Increase(Error sptr, PID_increase pid, float NowPlace, float Point){ float iError,//当前误差 Increase; //最后得出的实际增量 iError = Po原创 2021-02-07 00:10:03 · 3047 阅读 · 3 评论 -
STM32串口收发
一、与串口收发以及中断相关的函数1 void USART_Init()串口初始化2 void USART_Cmd()使能串口3 void USART_ITConfig()使能中断4 void USART_SendData()发送数据5 uint16_tUSART_ReceiveData();接收数据6 FlagStatus USART_GetFlagStatus()获取状态标志位7 void USART_ClearFlag()清除状态标志位8 ITStatus USART_Ge原创 2021-02-06 19:09:26 · 982 阅读 · 1 评论 -
FreeRtos学习笔记----------------------内核控制函数
内核控制函数临界段代码保护临界段是指必须完整运行不能被打断的代码FreeRtos进入临界段之后需要关闭中断,处理完临界段之后再打开中断临界段代码保护函数如下在中断中void Task_test( void * pvParameters){ u16 x; while(1) { x = taskENTER_CRITICAL_FROM_ISR(); //进入临界保护区 vTaskDelay(3000); vTaskGetRunTimeStats(Infor原创 2021-02-06 16:45:36 · 119 阅读 · 0 评论 -
FreeRtos学习笔记-----------------任务状态等参数的查询
API函数展示实验实验内容:统计各个任务的运行时间和CPU使用时间占比等信息所用API函数:void vTaskGetRunTimeStats( char * pcWriteBuffer ) PRIVILEGED_FUNCTION; /* pcWriteBuffer表示存储数据的内存 */首先,在FreeRtosConfig.h中 更改如下两个宏#define configGENERATE_RUN_TIME_STATS 1...原创 2021-02-06 00:24:39 · 419 阅读 · 0 评论 -
FreeRtos学习笔记---------任务的挂起与恢复
任务的挂起与恢复一、任务挂起和恢复的含义挂起意思其实就是让任务暂停,与删除任务相似,但是任务的堆栈和内存都没有被删除。恢复顾名思义就是恢复被挂起的任务。二、任务挂起与恢复使用的API函数vTasksuspend() //挂起函数vTaksResume() //恢复任务的运行vTaskResumeFromISR() //中断服务函数中恢复任务的运行其中 vTaskResumeFromISR()有返回值返回值含义pdTRUE被原创 2021-01-26 00:10:08 · 416 阅读 · 1 评论 -
FreeRtos学习笔记---------------创建任务(静态方法)
使用静态方法创建任务一、打开configSUPPORT_STATIC_ALLOCATION#define configSUPPORT_STATIC_ALLOCATION 1之后需要配置定时器和空闲任务所需内存// 空闲任务所需堆栈static StackType_t IdleTaskStack[configMINIMAL_STACK_SIZE];static StaticTask_t IdleTaskTCB;//定时器任务所需堆栈static StackType_t原创 2021-01-23 16:27:01 · 983 阅读 · 3 评论 -
FreeRtos学习笔记-------------用动态方法创建和删除任务
FreeRtos动态方法创建删除任务利用函数xTaskCreate/*任务创建函数*/xTaskCreate( TaskFunction_t pxTaskCode, const char * const pcName, /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ const configSTACK_DE原创 2021-01-21 18:11:05 · 153 阅读 · 0 评论 -
FreeRtos学习笔记---------------初识API
FreeRtos学习笔记一 API函数API函数xTaskCreate函数参数xTaskCreateStatic函数参数xTaskDelete参数API函数freertos的任务创建与删除本质上是API函数的调用函数名称功能xTaskCreate()使用动态的方法创建一个任务xTaskCreateStatic()使用静态的方法创建一个任务xTaskCreateRestricted()创建一个使用MPU进行限制的任务,相关内存使用动态分配xTaskDelete原创 2021-01-19 18:23:29 · 140 阅读 · 0 评论