摘要: while(--i)和我们正常逻辑一样的:i=0,跳出循环。 while(i--)就比较特殊了,它在i=0的时候依旧执行一次,可以推测出来: 最后一次while是用的i=1这个条件来进行判断,然后再减一,使得i=0。也即 i-- 为“先引用再减一” 阅读全文
posted @ 2021-01-18 05:07 昆山皮皮虾 阅读(233) 评论(0) 推荐(0)
摘要: i2c_master_transfer函数,原作者左钟凯。可以借鉴一下。 1 /* 2 * @description : I2C数据传输,包括读和写 3 * @param - base: 要使用的IIC 4 * @param - xfer: 传输结构体 5 * @return : 传输结果,0 成功 阅读全文
posted @ 2021-01-17 16:03 昆山皮皮虾 阅读(708) 评论(0) 推荐(0)
摘要: https://blog.51cto.com/iamokay/2426525 阅读全文
posted @ 2021-01-15 11:23 昆山皮皮虾 阅读(62) 评论(0) 推荐(0)
摘要: 1.join函数 2.addprefix函数(加相同前缀) 3.addsuffix函数(加相同后缀) 4.basename(提取文件名) 5.suffix函数(提取文件后缀) 6.notdir函数(提取指定目录下的文件名) 7.dir函数(提取目录) 8.subst函数(字符串替换) 9.patsu 阅读全文
posted @ 2021-01-10 04:48 昆山皮皮虾 阅读(125) 评论(0) 推荐(0)
摘要: 由于I2C很重要,应用很广,所以认为有必要将I2C驱动的设计细节给一一“拎出来”,防止自己以后漏掉细节而导致通信失败!以下主要是基于I.MX6ULL的主机I2C驱动来总结的。 1.使用如下8个函数即可实现I2C通信 2.与I2C相关的5个16位寄存器 如下图按照驱动中对I2C寄存器的“动作频率”来排 阅读全文
posted @ 2021-01-09 12:38 昆山皮皮虾 阅读(379) 评论(0) 推荐(0)
摘要: 基于I.MX6ULL的串口驱动 1.uart驱动 1 #include "bsp_uart.h" 2 #include "bsp_gpio.h" 3 4 5 6 /*初始化UART1,波特率为115200*/ 7 void uart_init(void) 8 { 9 /*初始化UART1的IO*/ 阅读全文
posted @ 2021-01-07 21:46 昆山皮皮虾 阅读(318) 评论(0) 推荐(0)
摘要: 以下为I2C读写时序的步骤细节: 下图源自AP3216C的手册,列出了如下四种I2C protocol。 根据如下的I2C的读写结构,可以看出来: ①用颜色标记出来的结构(起始信号,从机地址,传输方向,停止信号),均为主机发送。 ②Data和ACK(NACK)可由主机发送,也可由从机发送。 阅读全文
posted @ 2021-01-06 20:25 昆山皮皮虾 阅读(758) 评论(0) 推荐(0)
摘要: 中断函数框架自己整理了一遍,大致如下,从上到下为函数的调用关系。其中GIC为Cortex-A内核的中断管理机构,全称是general interrupt controller。 1.中断初始化 2.外部中断驱动 阅读全文
posted @ 2021-01-06 03:31 昆山皮皮虾 阅读(167) 评论(0) 推荐(0)
摘要: 函数对文件夹变量的引用细节: 经过patsubst,foreach函数处理,文件变量如下: Makefile: 从第14行开始,"/*.S"字段非注释,但是变了颜色,忽略颜色变化。 1 CROSS_COMPILE ?= arm-linux-gnueabihf- 2 TARGET ?= key 3 4 阅读全文
posted @ 2021-01-04 11:52 昆山皮皮虾 阅读(348) 评论(0) 推荐(0)
摘要: 用了辅助性的release变量,不用release,烧写开发板,我的蜂鸣器会出现间歇性的声音,说明还是没有去除抖动。 1 int key_getvalue(void) 2 { 3 int ret = 0; 4 static unsigned char release = 1; /* 按键松开 */ 阅读全文
posted @ 2021-01-04 01:39 昆山皮皮虾 阅读(173) 评论(0) 推荐(0)