BearPi小熊派 鸿蒙开发入门笔记(2)
2.HarmonyOS内核开发
2.1 任务管理
1.基本概念
2 任务相关概念
3 任务调度机制
4 实现任务管理【部分接口】
1.创建任务
osThreadAttr_t 结构体说明
任务创建案例
(1) thread_example.c文件
(2) 同目录下 BUILD.gn
(3) 上级目录下 BUILD.gn
2.扩展案例
使用 任务创建、任务挂起、任务恢复、任务删除
(1) thread_example.c文件
(2) 同目录下 BUILD.gn
(3) 上级目录下 BUILD.gn
显示效果
不方便显示
关闭系统信息
更改初始化 代码
更改后结果
2.2 软件定时器
1 基础概念
2 运行机制
3 软件定时器接口
4 基础案例
实现两个软件定时器 触发输出
(1) my_timer_example.c
(2) 同级目录下 BUILD.gn
(3) 上级目录下 BUILD.gn
(4) 结果
5 扩展案例
代码
结果
2.3 信号量
1 信号量概念
2 信号量运行机制
3 信号量接口
4 扩展案例
(1) semaphore_example.c
(2) 结果
2.4 事件
1 基本概念
2 运行机制
3 事件接口
4 扩展案例
创建3个线程,3个事件
线程1:优先级25,发布 事件1、2
线程2:优先级25,要求同时接收事件1、2、3 才触发
线程3:优先级24,接收到事件1或2 就触发,并发送事件3
(1) 核心函数
(2) 线程具体实现
(3) 结果
2.5 互斥锁
1 互斥锁基本概念
2 运行原理
3 互斥锁接口
4 扩展案例
创建三个优先级的线程和互斥量
高优先级线程 延迟1s,获取互斥量后释放
中优先级线程 只显示
低优先级线程 获取互斥量并释放
(1) 核心函数
(2) 线程实现
(3) 结果
2.6 消息队列
1 基本概念
2 运行机制
3 消息队列接口
4 扩展案例
线程1:每秒发送数据 给消息队列
线程2:每三秒 读取消息队列的个数并 读取一个消息,当消息队列满时,删除消息队列
(1)核心代码
(2) 线程实现
(3) 结果
2.7 GPIO
1 GPIO接口
2 原理图
3 扩展案例
线程1:GPIO2设置为 输出模式的GPIO,控制LED 每秒闪烁
线程2:读取 GPIO2的 复用功能、GPIO方向、输出电平值
(1) 核心代码
(2) 线程实现
(3) 结果
2.8 GPIO中断
1 GPIO中断接口
2.按键对应GPIO引脚
3.扩展案例
创建两个Gpio中断,
Gpio11设置下降沿触发中断,中断函数 点亮LED,并改变中断触发方式 为 上升沿触发
Gpio12 设置下降沿触发中断,,中断函数 关闭LED,并屏蔽 Gpio12中断
中断函数1中
(1)核心代码
(2) 线程实现
(3) 结果
2.9 PWM
1 PWM接口
2.扩展案例
(1)核心代码
(2) 线程实现
(3) 结果
描述:LED 实现呼吸灯 并输出 呼吸次数
呼吸次数<3 正常呼吸,在3~6之间,关闭;6~8 之间 恢复呼吸;在8~10之间 常亮;在10之后 删除线程
2.10 ADC
1 ADC接口
2 ADC对应引脚
3 案例
按键F1 对应GPIO11,对应ADC1的通道5,利用ADC的API 获取转换后的值
(1) 核心代码
(2) 具体实现
(3) 结果
2.11 IIC
1 IIC接口
2 原理图
3 案例
(1) 核心代码
创建I2CTask任务
(2) 具体实现
(3) storeText内部实现-------------用到再看
3.1 准备文本消息 NDEF(NFC Data Exchange Format)
3.2 写入数据---空