当前位置: 首页 > news >正文

静/动态库 IIC(arm) day58

十七:动态库和静态库

库:一堆可执行二进制文件的集合,由若干个.o文件归并生成

一:静态(链接)库:libxxx.a

生成一个独立的可执行程序(运行时仅需要一个文件即可) 使用方便 不需要安装

文件比较大

多个程序使用同一个静态库时,每个程序独立链接

库文件有改动则需要编译整个工程

静态库生成:
gcc -c fun.c -o fun.o 		//生成.o文件
ar  -rcv libfun.a  fun.o	//生成静态库
gcc main.c libfun.a			//链接静态库

二:动态(链接)库:libxxx.so

编译时动态链接,可执行程序不会复制库文件,仅会在内部记录库文件 的位置等链接信息。

程序执行时,需要可执行文件及库文件同时存在,并且可执行文件能找 到库文件。

使用:

​ 1.将libxxx.so拷贝到系统PATH目录下

​ 或者

​ 2.将libxxx.so所在的 路径添加到系统PATH

生成的可执行程序较小

多个程序使用同一个库,库只需要存在一份

库文件有改动时,只需要单独更新库即可(不需要全更改),可执行程序不需要重新编译

动态库生成:
gcc -fPIC -shared fun.c fun1.c -o libfun.so 程序编译:
gcc  main.c  -lfun     //libfun.so必须存在于系统PATH下
gcc  main.c  -lfun  -L  ./      //指定链接路径
gcc  mian.c libfun.so -o dmain	//链接到main.c文件
./dmain							//运行库

十三:IIC

一:基础概念

SDA和SCL线都为双向的。

配制IIC总线:可以编程ICCON寄存器中的4位预分频器值来控制串行时(SCL)的频率。IIC总线接口地址被储存在IC总线地址(IICADD)寄存器中。(默认IIC总线接口地址包含一个未知值。)

二:代码

#include <s3c2440.h>
#include "iic.h"void iic_init(void)
{//ÅäÖÃGPE14¡¢15Òý½Å¹¦ÄÜΪIICSCL¡¢SDAGPECON &= ~(0xf << 28);GPECON |= (0xa << 28);IICCON = (1 << 7) | (1 << 6) | (1 << 5);
}unsigned char iic_write(unsigned char addr, unsigned char * data, unsigned char len)
{unsigned char i = 0;IICDS = addr;IICSTAT = 0xf0;IICCON &= ~(1 << 4);while(!(IICCON & (1 << 4)));for(i = 0; i < len; i++){IICDS = data[i];	IICCON &= ~(1 << 4);while(!(IICCON & (1 << 4)));}IICSTAT = 0xd0;IICCON &= ~(1 << 4);delay(100);
}
#if 0
unsigned char iic_read(unsigned char addr, unsigned char * data, unsigned char len)
{unsigned char i = 0;IICDS = addr;IICSTAT = 0xb0;IICCON &= ~(1 << 4);while(!(IICCON & (1 << 4)));for(i = 0; i < len; i++){data[i] = IICDS;	IICCON &= ~(1 << 4);while(!(IICCON & (1 << 4)));}IICSTAT = 0x90;IICCON &= ~(1 << 4);delay(100);
}
#endif
unsigned char iic_read(unsigned char addr,unsigned char * data,unsigned char len)
{unsigned char i = 0;IICDS = addr;	//addr write IICDSIICSTAT |= (0xb0 << 0);	//0xf0 write IICSTAT// send IICDS datewhile(!(IICCON &(1 << 4)));for(i = 0;i<len;i++){data[i] = IICDS;IICCON &= ~(1 << 4);while(!(IICCON & (1 << 4)));}               IICSTAT |= (0x90 << 0);IICCON &= ~(1 << 4);delay(100);					
}
http://www.lryc.cn/news/626895.html

相关文章:

  • Docker在Linux中安装与使用教程
  • 【Android】Serializable和Parcelable序列化对象:传递自定义类数据
  • 无人机抗噪模块技术概述!
  • AI + 金融领域 + 落地典型案例
  • AI +金融 = 七大核心维度+ 落地典型困难
  • 基于深度学习CenterPoint的3D目标检测部署实战
  • 《GPT-OSS 模型全解析:OpenAI 回归开源的 Mixture-of-Experts 之路》
  • 使用 FastAPI 的 WebSockets 和 Elasticsearch 来构建实时应用
  • shell脚本——搜索某个目录下带指定前缀的文件
  • 标准解读——71页2025《数字化转型管理 参考架构》【附全文阅读】
  • C++11中的互斥锁,条件变量,生产者-消费者示例
  • Cyberduck (FTP和SFTP工具) v9.2.3.43590
  • SpringBoot3后端项目介绍:mybig-event
  • 华为云之基于鲲鹏弹性云服务器部署openGauss数据库【玩转华为云】
  • 网页作品惊艳亮相!这个浪浪山小妖怪网站太治愈了!
  • AutoGLM2.0背后的云手机和虚拟机分析(非使用案例)
  • 百度地图 添加热区(Hotspot)
  • Ubuntu_22.04安装文档
  • 应用在运行时,向用户索取(相机、存储)等权限,未同步告知权限申请的使用目的,不符合相关法律法规要求--教你如何解决华为市场上架难题
  • 【数据库】Oracle学习笔记整理之六:ORACLE体系结构 - 重做日志文件与归档日志文件(Redo Log Files Archive Logs)
  • Ubuntu 虚拟显示器自动控制服务设置(有无显示器的切换)
  • 机器学习数据预处理总结(复习:Pandas, 学习:preprocessing)
  • iOS 应用迭代与上架节奏管理 从测试包到正式发布的全流程实践
  • 数据预处理:机器学习中的关键步骤
  • 【iOS】NSRunLoop
  • 25_基于深度学习的行人检测识别系统(yolo11、yolov8、yolov5+UI界面+Python项目源码+模型+标注好的数据集)
  • 解决程序无响应自动重启
  • 织梦素材站网站源码 资源付费下载交易平台源码
  • DeepSeek V3.1 完整评测分析:2025年AI编程新标杆
  • 【数据结构】快速排序算法精髓解析