- 博客(5)
- 收藏
- 关注
原创 基于aht21的硬件层hal的bsp_aht21_driver.c
首先在.h文件中,这些函数都不用谢,因为这些都是底层函数,最后在集成层中,直接进行绑定就行。例如这个iic_init()函数直接将函数绑定给pf_iic_init就行,如何绑定呢?根据上面的aht21_read的代码写一个自己的。模仿别人IIC的代码写一个。根据.h文件来写.c文件。
2025-05-24 00:38:27
53
原创 基于aht21的硬件层hal的bsp_aht21_driver.h
1.从机相应的ACK,2.主机相应的ACK,3.主机相应的NAK(就是不应答)4.START 开始 5.P 停止 6.发送字节 7.接收字节。另外,是IIC通信需要IIC_Init() 低功耗时的iic_deinit(),防止IIC时序被干扰,需要做一个临界区保护。如果带有操作系统,设计一个操作系统接口yield_interface_t,在操作系统中让出CPU,避免忙等待。根据aht21手册,需要IIC通信,现在先构造有关IIC通信的实例结构体。构造前,先写好状态返回值,文件中任何一个函数,最好有返回值。
2025-05-18 16:34:12
232
3
原创 关于读取数组内容以及指针强转换
今天遇到一个有关FLASH写入数组存储内容的事情,在做OTA升级过程中,发现传出的协议内容与解密后的内容不一致,最后发现是FlASH写入出错了。首先第一句的Flash_Write写入的是Mem_Read_buffer数组的首地址,与Mem_Read_buffer的内容并无关系。指针的解引用操作隐式约定“从指针指向的地址开始,读取 sizeof(u32) 字节”(即 4 字节)。第二句写入的是数组前4个元素,为什么是4个字节的内容,而不是一个字节的内容?的数据类型决定的,与指针原本的来源(
2025-05-15 23:48:27
170
原创 FreeRtos信号量(互斥信号量与二值信号量)
创建3个任务,Task1,Task2,Task3,共同使用同一资源sharedCounter,在任务中对其自增,在main 函数里面创建并调用Task1,Task2,Task3,如果不使用互斥就会导致资源不会按照预期进行自增长。:用于任务同步,有take和give两个状态,默认初始化处于释放状态(队列中有信号量),创建OS信号量时初始为空队列,需先放入信号量才能获取。:任务访问共享资源前先获取互斥锁,操作完成后释放,确保同一时刻只有一个任务能访问共享资源,避免竞争条件。二值信号量任何任务或中断可释放。
2025-05-13 21:54:31
404
原创 中断优先级与工作原理
以按钮控制板载LED亮灭为例,此前用while循环不断查询按钮状态,引入ESTI模块后,利用其捕获按钮松开时的上升沿产生中断,并在中断函数里面进行处理中断程序。中断优先级分组:STM32单片机用四位二进制数表示中断优先级,分为抢占优先级和子优先级,前者与中断嵌套有关,后者与中断排队有关。中断优先级与排队实例:通过假定中断优先级分组、中断优先级,分析中断嵌套及排队顺序,并绘制图。中断排队概念:以高铁检票为例,当几个中断优先级相仿时,等待前一个中断执行完,再处理新中断。多个中断排队,优先级高的排前面。
2025-05-09 22:20:21
145
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人