
单片机
文章平均质量分 79
呆呆狗meng
一只专注于学习进步的呆呆狗
展开
-
【freeRTOS】操作系统之五.-内存管理
FreeRTOS\Source\portable\MemMang下提供了5中内存分配机制的实现一、配置FreeRTOS内存大小在FreeRTOSConfig.h头文件中宏configTOTAL_HEAP_SIZE用于配置内核可用的RAM大小。在heap1.c, heap2.c, heap4.c源文件中,分配的内存实际上是用一个静态数组ucHeap来表示。再具体的实现上,FreeRTOS 内核规定的几个内存管理函数原型。系统内部及用户如果要使用内存,只能通过该函数接口进行申请。。原创 2022-11-18 12:52:14 · 1932 阅读 · 0 评论 -
【freeRTOS】操作系统之四-事件标志组
配置宏定义 configUSE_16_BIT_TICKS 为 0 时,每创建一个事件标志组,用户可以使用的事件标志是24 个。配置宏定义 configUSE_16_BIT_TICKS 为 1 时,每创建一个事件标志组,用户可以使用的事件标志是8 个。 使用事件标志组可以让 RTOS 内核有效地管理任务,而全局变量是无法做到的,任务的超时等机制需要用户自己去实现。 任务间事件标志组的实现是指各个任务之间使用事件标志组实现任务的通信或者同步机制。事件标志组 API 函数。原创 2022-11-18 12:50:54 · 665 阅读 · 0 评论 -
【freeRTOS】操作系统之三-信号量
二值信号量通常用于互斥访问或同步,二值信号量和互斥信号量非常类似,但是还是有一 些细微的差别,互斥信号量拥有优先级继承机制,二值信号量没有优先级继承。因此二值信号量更适合用于同步(任务与任务或任务与中断的同步),而互斥信号量适合用于简单的互斥访问。 和队列一样,信号量 API 函数允许设置一个阻塞时间,阻塞时间是当任务获取信号量的时 候由于信号量无效从而导致任务进入阻塞态的最大时钟节拍数。原创 2022-11-18 12:49:01 · 1177 阅读 · 0 评论 -
【freeRTOS】操作系统之二-队列
在任何RTOS中,都具有一个重要的通信机制----消息队列。原创 2022-11-18 12:47:48 · 873 阅读 · 0 评论 -
【freeRTOS】操作系统之一-任务调度
freeRTOS 介绍原创 2022-11-18 12:44:35 · 2637 阅读 · 0 评论 -
uble)RAND_MAX) - 0.5); //随机噪声
#include “stdio.h”#include “stdlib.h”#include “math.h”double frand(){return 2*((rand()/(double)RAND_MAX) - 0.5); //随机噪声}int main(){printf(“Hello world!\n”);float x_last=0;float p_last=0.02;float Q = 0.018;float R = 0.542;float kg;float x_mi原创 2021-11-24 18:04:26 · 267 阅读 · 0 评论 -
pid控制
#include “pid.h”#include “led.h”#include “timer.h”#include “usart.h”extern float pwmval;extern char CNT_buf[60];extern char PWM_buf[60];PID pid;/**************************************************************************函数功能:PID参数初始化*************原创 2021-11-16 23:21:48 · 199 阅读 · 0 评论 -
基于kalman和模糊pid的matlab实现方法
%Fuzzy PID Controlclose all;clear all;a=readfis(‘fuzzpid’); %Load fuzzpid.fists=0.001;sys=tf(5.235e005,[1,87.35,1.047e004,0]);%系统模型%sys=tf(16470,[1,1667,3393]);%系统模型dsys=c2d(sys,ts,‘tustin’); %用双线性逼近法对‘sys’离散化[num,den]=tfdata(dsys,‘v’); %获取离散模型ds原创 2021-11-16 23:21:12 · 476 阅读 · 0 评论 -
基于kalman和pid的matlab实现方法
%Discrete Kalman filter for PID control%Reference kalman_2rank.m%x=Ax+B(u+w(k));%y=Cx+D+v(k)clear all;close all;ts=0.001;%Continuous Planta=40;b=2732;sys=tf(b,[1,a,0]);dsys=c2d(sys,ts,‘z’);[num,den]=tfdata(dsys,‘v’);A1=[0 1;0 -a];B1=[0;b];C1=原创 2021-11-16 23:20:26 · 274 阅读 · 0 评论 -
Lwip2.0.3 版本的 tftp 协议
Lwip2.0.3 版本的tftp 协议笔记Lwip2.0.3中的tftp与旧版本的lwip的部分改动挺大,新版本的提供的接口更加方便,新版本中tftp-server.h定义了一个结构体,声明了一个初始化函数,这个函数就是给开发人员的接口,里面是四个函数接口,open,close write read,我们只需要重新建立这四个函数,与其对应即可。.h如下:*/struct tftp_context { /** * Open file for read/write. * @param原创 2020-06-30 22:46:50 · 763 阅读 · 0 评论 -
LWIP2.0.3 SNMP
SNMP数据类型数据类型共分为三大类,即:(1)通用类型(Universal)(2)通用结构类型(Universal-constructed)(3)应用类型(application)●通用数据类型通用数据类型通常被称为非聚合类型,在SNMP协议中有4种通用数据类型:(1)INTEGER: 整型,是-2,147,483,648~2,147,483,647的有符号整数;(2)OCTET STRING: 字符串;(3)OBJECT IDENTIFIER: 对象标识符;(4)NULL: 空值。原创 2020-06-30 22:43:19 · 1559 阅读 · 0 评论 -
hex文件的解析- keil
在你做升级的时候你会用到hex文件的加载,所以对hex文件的解析很重要。1,结构.hex整个文件以行为单位,每行以冒号开头,内容全部为16进制码(以ASCII码形式显示)格式为:<0x3a > 数据长度1byte 数据地址2byte 数据类型1byte 数据nbyte 校验1byte <0x0d> <0x0a>由于每行标识数据地址的只有2Byte,所以最大只能到2^16 = 64K,为了可以保存高地址的数据,就有了Extended Linear Ad原创 2020-06-30 22:38:39 · 3135 阅读 · 0 评论 -
GD32fxxx stm32fxx printf c语言实现
1,设置使用printf 需要进行重定向,printf 实际上是使用串口输出。其实很简单:在keil中 勾选箭头所示的 Use MicroLIB 使用微库2,添加再在代码中加入函数 :#include <stdio.h>int fputc(int ch, FILE* stream){ while (!(USART1->SR & USART_FLAG_TXE));USART_SendChar(USART1, (uint8_t)ch); ret原创 2020-06-30 22:31:47 · 2967 阅读 · 3 评论