FreeRTOS 时间管理

在使用 FreeRTOS 的过程中我们通常会在一个任务函数中使用延时函数对这个任务延时,当执行延时函数的时候就会进行任务切换, 并且此任务就会进入阻塞态,直到延时完成,任务重新进入就绪态。延时函数属于 FreeRTOS 的时间管理,

阅读全文

FreeRTOS 任务相关API函数

FreeRTOS 最基本的功能就是任务管理,而任务管理最基本的操作就是创建和删除任务,
FreeRTOS 的任务创建和删除 API 函数如表 6.1.1.1 所示:

函数 描述
xTaskCreate() 使用动态的方法创建一个任务。
xTaskCreateStatic() 使用静态的方法创建一个任务。
xTaskCreateRestricted() 创建一个使用 MPU 进行限制的任务,相关内存使用动态内存分配。
vTaskDelete() 删除一个任务。

阅读全文

FreeRTOS 系统内核控制函数

定时器可以说是每个 MCU 都有的外设,有的 MCU 其定时器功能异常强大,比如提供 PWM、输入捕获等功能。但是最常用的还是定时器最基础的功能——定时,通过定时器来完成需要周期性处理的事务。 MCU 自带的定时器属于硬件定时器,不同的 MCU 其硬件定时器数量不同,因为要考虑成本的问题,FreeRTOS 也提供了定时器功能,不过是软件定时器,软件定时器的精度肯定没有硬件定时器那么高,但是对于普通的精度要求不高的周期性处理的任务来说够了。当 MCU 的硬件定时器不够的时候就可以考虑使用 FreeRTOS 的软件定时器。

阅读全文

FreeRTOS 任务切换

RTOS 系统的核心是任务管理,而任务管理的核心是任务切换,任务切换决定了任务的执行顺序,任务切换效率的高低也决定了一款系统的性能, 尤其是对于实时操作系统。 想深入了解 FreeRTOS 系统运行过程,任务切换是必须的。

  • PendSV 异常
  • FreeRTOS 任务切换场合
  • PendSV 中断服务函数
  • 查找下一个要运行的任务

阅读全文

FreeRTOS 调度器开启和任务相关函数详解

一个操作系统最核心的内容就是多任务管理,所以我们非常有必要去学习一下 FreeRTOS 的任务创建、删除、挂起、恢复和系统启动等,这样才能对 FreeRTOS 有一个更深入的了解。

  • 调度器开启过程分析
  • 任务创建过程分析
  • 任务删除过程分析
  • 任务挂起过程分析
  • 任务恢复过程分析

阅读全文

FreeRTOS 列表和列表项

列表和列表项是FreeRTOS 的一个数据结构,FreeRTOS 大量使用到了列表和列表项,它是FreeRTOS 的基石。

  • 什么是列表和列表项
  • 列表和列表项的初始化
  • 列表项的插入
  • 列表项末尾插入
  • 列表项的删除
  • 列表项的遍历
  • 列表项的插入和删除实验

阅读全文

Bootloader

含义和功能:

Bootloader,称为引导加载程序,是嵌入式系统加电后运行的第一段代码,如PC机中MBR上的BootLoader(PC机中的引导加载程序由BIOS(其本质就是一段固件程序)和位于硬盘MBR中的OS BootLoader(比如,LILO和GRUB等)一起组成。BIOS在完成硬件检测和资源分配后,将硬盘MBR中的BootLoader读到系统的RAM中,然后将控制权交给OS BootLoader。BootLoader的主要运行任务就是将内核映象从硬盘上读到RAM中,然后跳转到内核的入口点去运行,也即开始启动操作系统。)

阅读全文

PyQt中MainWindow, QWidget以及Dialog的区别和选择

  1. Qt界面分类
    在Qt Designer设计界面时,首先需要选择界面模板,主要分为三个类:
    1. Main Window
    2. Widget
    3. Dialog

阅读全文

Bootloader

经典蓝牙和蓝牙BLE的区别

说起蓝牙,大家一定听过蓝牙1.0 2.0 3.0 4.0,不过现在已经不再用版本号区分蓝牙了,蓝牙1.0~3.0都是经典蓝牙,在塞班系统就已经开始使用了,确实很经典。有些人一直认为蓝牙4.0就是蓝牙BLE,其实是错误的。因为4.0是双模的,既包括经典蓝牙又包括低能耗蓝牙。经典蓝牙和蓝牙BLE虽然都是蓝牙,但其实还是存在很大区别的。蓝牙BLE相比于经典蓝牙的优点是搜索、连接的速度更快,关键就是BLE(Bluetooth Low Energy)低能耗,缺点呢就是传输的速度慢,传输的数据量也很小,每次只有20个字节。但是蓝牙BLE因为其低能耗的优点,在智能穿戴设备和车载系统上的应用越来越广泛。

阅读全文

Nand Flash, Nor Flash, SDRAM总结

  • nand flash:适合大容量数据存储,类似硬盘;
  • nor flash:适合小容量的程序或数据存储,类似小硬盘;
  • sdram:主要用于程序执行时的程序存储、执行或计算,类似内存。

阅读全文

嵌入式系统开发步骤

  • 1、建立交叉开发环境配置开发主机
  • 2、移植bootloader
  • 3、linux内核移植
  • 4、建立并烧写根文件系统到目标板

阅读全文

嵌入式系统基础

1、嵌入式系统的定义
(1)定义:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。
(2)嵌入式系统发展的4个阶段:无操作系统阶段、简单操作系统阶段、实时操作系统阶段、面向Internet阶段。
(3)知识产权核(IP核):具有知识产权的、功能具体、接口规范、可在多个集成电路设计中重复使用的功能模块,是实现系统芯片(SOC)的基本构件。
(4)IP核模块有行为、结构和物理3级不同程度的设计,对应描述功能行为的不同可以分为三类:软核、固核、硬核。

阅读全文

ROM、RAM、DRAM、SRAM和FLASH的区别解析

一、ROM介绍

ROM和RAM指的都是半导体存储器,ROM在系统停止供电的时候仍然可以保持数据,而RAM通常都是在掉电之后就丢失数据,典型的RAM就是计算机的内存。

阅读全文

地址总线,字长,内存容量,与寻址空间

字长——同时处理的位数

处理机字长是指处理机能同时处理(或运算)的位数,即同时处理多少位(bit)数据。比如Intel Pentium 4处理器字长为32位,它能同时处理32位的数据,也即它的数据总线为32位。以前的处理器比如8086,则为16位处理器,现在新兴的64位处理器,它的数据吞吐能力更强,即能同时对64位数据进行运算。处理器的字长越大,说明它的运算能力越强。

阅读全文

CC2540学习笔记整理

整体

1.TI的蓝牙平台支持2种协议栈/应用配置:单一设备配置、网络处理器配置

2.协议栈最顶层2个通用profile:
GAP 通用访问配置文件层 Generic Access Profile
GATT 通用属性配置文件层 Generic Attribute Profile

阅读全文

常用排序算法总结

冒泡排序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include<stdio.h>
#define N 11
void sort()
{

for( i = 1; i < (N-1); i++)
{
for( j = 1; j < (11-i); j++)
{
if( a[j] > a[j + 1] )
{
t = a[j];
a[j] = a[j+1];
a[j+1] = t;
}
}
}
}
main()
{
int i, j, t, a[11];
printf("INPUT 10 NUM : \n");
for( i = 1; i < N; i++)
scanf("%d",&a[i]);
printf("The num is : \n");
for( i = 1; i < N; i++)
printf("%5d",a[i]);
printf("\n");

/************************/

printf("the sorted num : \n");
for( i =1; i <= 10; i++)
printf("%5d",a[i]);
printf("\n");
}

阅读全文

Python 3 基础语法

多行语句
Python 通常是一行写完一条语句,但如果语句很长,我们可以使用反斜杠()来实现多行语句,例如:
total = item_one + \
item_two + \
item_three

数据类型
python中数有四种类型:整数、长整数、浮点数和复数。
• 整数, 如 1
• 长整数 是比较大的整数
• 浮点数 如 1.23、3E-2
• 复数 如 1 + 2j、 1.1 + 2.2j

阅读全文

Python 3 字典

阅读全文

STM32 USART串行总线

UART与USART的区别

UART与USART都是单片机上的串口通信,他们之间的区别如下:
首先从名字上看:
UART:universal asynchronous receiver and transmitter通用异步收/发器
USART:universal synchronous asynchronous receiver and transmitter通用同步/异步收/发器

阅读全文

通信协议 STM32 USB

USB , 是英文 Universal Serial BUS(通用串行总线)的缩写,而其中文简称为“ 通串线,
是一个外部总线标准,用于规范电脑与外部设备的连接和通讯。是应用在 PC 领域的接口技术。
USB 接口支持设备的即插即用和热插拔功能。 USB 是在 1994 年底由英特尔、康柏、 IBM、
Microsoft 等多家公司联合提出的。

阅读全文