freeRTOS软件定时器

定时器的概念
每过一个周期定时器就会触发一个事件
硬件定时器
硬件定时器的特点就是精准度高其本身是芯片自带的模块缺点就是数量少
软件定时器
软件定时器理论上只需要足够内存就可以创建多个使用简单成本低缺点是精准度不高定时器任务可能会被高优先级任务等打断

调用函数vTaskStartScheduler()开启任务调度的时候会创建两个任务一个空闲任务一个用于管理软件定时器的任务这个任务就叫软件定时器任务软件定时器服务任务作用如下:

  • 负责软件定时器超时的逻辑判断
  • 调用超时软件定时器的超时回调函数
  • 处理软件定时器命令队列

freeRTOS-任务管理

任务创建与删除
任务的创建有两个函数一个是xTaskCreate另一个是xTaskCreateStatic
二者的区别

  • xTaskCreate是使用动态分配内存系统自动释放内存适用于资源充足的系统
  • xTaskCreateStatic是静态分配内容要求用户在编译时分配内存任务释放需要用户手动管理适用于内存受限系统

Read More

freertos学习之路之初步接触

为什么单片机系统选择freertos不选择linux
因为对于单片机来讲存储空间和性能显然不足以支撑linuxfreertos小巧免费开源又在实际应用中经常用到作为用来调度任务的操作系统来讲很适合单片机

freertos仅包含基本的任务调度和通信机制而linux强大完整而且复杂包含文件系统网络通信栈设备驱动等功能


freeRTOS的命名规则
uint32_t类型的变量以ul为前缀ul分别表示unsignedlong
uint16_t类型的变量以us为前缀us分别表示unsignedshort
uint8_t类型的变量以uc为前缀uc分别表示unsignedchar
stdint标准整型 类型的变量以 x 为前缀
非 stdint 类型的无符号类型变量前缀附加u

例如UBaseType_t类型变量以 ux 为前缀

枚举变量以e为前缀指针附加p为前缀

例如指向 uint16_t 的指针将以 pus 为前缀

函数命名规则

  • 根据变量定义的相关规定API 函数以其返回类型为前缀并为 void 添加前缀 v
  • 文件作用域静态私有函数以 prv 为前缀

宏命名规则

  • 宏以定义宏的文件名或文件名缩写为前缀前缀为小写例如在 FreeRTOSConfig.h 中定义 configUSE_PREEMPTION
  • 除前缀外所有宏均使用大写字母书写并使用下划线来分隔单词

freertos的默认任务是指对用户而言的任务空闲任务是kernel自动创建的优先级最低作用如下

  • 回收被删除任务的内存
  • 在系统空闲时运行
  • 可用于低功耗模式的进入或系统资源管理

awk和sed命令

在学习awk和sed首先了解一下linux一些常见命令grep "string" /....就是在某个文件或者目录下搜索某个字符串关键字如果加上-n的话则会显示对应的行数
例如要获取/etc/passwd中的有root的一行

1
grep -n "root" /etc/passwd

Read More

shell常见易错

直接进入正题

常见的一个错误就是赋值简单举例子来说

1
str1="This is a sentence."

赋值的时候不能带空格

在下面这种情况就需要带不然的话会被当做一个整体字符串来看

1
2
expr 10 + 2
//这里顺便提一嘴,如果用expr作乘法运算比如: expr 10 * 2是错误的在shell中这里的星号会被认为和ls *.sh中的星号作用一样所以需要加转义字符expr 10 \* 2