摘要:
存储分类 1. RAM: 运行内存,速度快、掉电数据丢失 2. ROM:在单片机中就是Flash。ROM原来指一次性编程存储,后来改善为PROM->EPROM->EEPROM改善增强。Flash是在EPROM的基础上改善而来,相对于EEPROM来说,速度较慢,但都是非易失性存储设备。Flash需要进 阅读全文
摘要:
CAN电平基础定义 电压范围:0-5V 隐性: 1 显性: 0 通讯机制: 总线 总线空闲时,允许多个节点同时发送报文,总线通过ID进行仲裁,显性位覆盖隐形位,ID越小,优先级越高 节点 节点发送报文前,检测总线状态,空闲时,节点才能发送报文 节点发送报文同时,进行回读检测,判断发出位是否与接收位一 阅读全文
摘要:
目的: 实现IO口功能设置的软硬件分离 pinctrl:通过设备树节点,记录不同板级硬件信息; Pinctrl 遵循的是platform 框架实现实现设备总线。 gpio: 通过一些列的API接口,读取设备树中pinctrl节点的硬件信息,设置相应的引脚功能。 pinctrl文件位置: Linux文 阅读全文
摘要:
目的: 进行驱动和设备分离,避免驱动的重复编写,使设备和驱动能够自由组合。 platform文件分析: 结构体介绍: bus_type 定义的 platfor_bus_type总线:其中 platform_match 是匹配函数(四种匹配方式,匹配设备和驱动) plat_form_driver 描述 阅读全文
摘要:
事件组也是一种异步处理方式,,将事件监听和事件处理分离开。 可以记录事件、清除事件标志位。 使用流程: 创建事件组 事件监听task 事件处理task 事件发生,设置事件位 等待事件位,清除相应事件位 处理事件 事件组创建: //创建API EventGroupHandle_t xEventGrou 阅读全文
摘要:
FreeRTOSConfig.h 中涉及到的宏定义: configUSE_TIMERS一般用于处理一些周期性任务,也可以跟事件组搭配使用,如监听IO事件。 任务创建/删除: //两种创建方法 TimerHandle_t xTimerCreate( const char *pcTimerName, c 阅读全文
摘要:
对于共享资源的访问或者一些非原子操作的保护,有几种常用方法: 1. 通过挂起中断创建临界区 2. 通过挂起调度器 3. 通过互斥量 1. 挂起中断 taskENTER_CRITICAL(); taskEXIT_CRITICAL(); 对于临界区的内容处理短、快速的代码,可以使用中断挂起,但是,该套函 阅读全文
摘要:
信号量进行中断上下文切换 信号量操作是原子操作 信号量能阻塞任务,同时也能解除任务的阻塞状态 信号量分类: 二值信号量:队列长度为1,处理中断频率低的事件,进行中断上下文切换 互斥信号量:针对共享数据的原子操作 计数信号量: 队列长度为N的二值信号量,对于中断频率较高的事件,可以用计数信号量,进行处 阅读全文
摘要:
队列创建 宏定义:configSUPPORT_STATIC_ALLOCATION //静态创建 QueueHandle_t xQueueCreateStatic( UBaseType_t uxQueueLength, UBaseType_t uxItemSize, uint8_t *pucQueue 阅读全文
摘要:
1. 预定义符号: __FILE__ 源文件名字 __LINE__ 文件当前行号 __DATE__ 文件被编译的日期 __TIME__ 文件被编译时间 __FUNCTION__ 输出当前函数名称 __STDC__ 如果编译器遵循 ANSIC,返回值为 1 int main(void){ printf 阅读全文