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

网站建设行业怎么样桂林论坛

网站建设行业怎么样,桂林论坛,查询网站备案号app,邯郸建设局公开网站本文一开始讲述了解决方案#xff0c;后面是我做的笔记#xff0c;用来讲述我的发现流程和探究的 Pico I2C 代码结构。 前提知识 首先要说明一点#xff1a;Pico 有两个 I2C#xff0c;也就是两套 SDA 和 SCL。这点你可以在针脚图中名字看出#xff0c;比如下图的 Pin 4…本文一开始讲述了解决方案后面是我做的笔记用来讲述我的发现流程和探究的 Pico I2C 代码结构。 前提知识 首先要说明一点Pico 有两个 I2C也就是两套 SDA 和 SCL。这点你可以在针脚图中名字看出比如下图的 Pin 4 和 Pin 5是 I2C1 的而默认的 Pin 6 和 Pin 7 是 I2C0 的。 默认情况下是只开启了第一个 I2C也就是只有 I2C0 的针脚是可以使用的。如果这种情况下你哪怕修改了针脚但不是 I2C0 的也是不会正常运行的。 如何选择哪个I2C控制器以及SDA和SCL针脚 在设置之前声明三个变量或宏来方便开发。建议使用宏这比较符合树莓派的开发风格 #define I2C i2c0 #define I2C_SDA_PIN 4 #define I2C_SCL_PIN 5如果宏扩展出错那么就使用变量。 然后初始化 I2C 的时候来设置使用哪个 I2C 控制器以及哪个SDA和SCL针脚。下面是设置根据上面的设置这里使用的是第一个 I2C 控制器SDA 使用的是 GP4SCL 使用的是 GP5频率为1000000 i2c_init(I2C, 1000000); gpio_set_function(I2C_SDA_PIN, GPIO_FUNC_I2C); gpio_set_function(I2C_SCL_PIN, GPIO_FUNC_I2C); gpio_pull_up(I2C_SDA_PIN); gpio_pull_up(I2C_SCL_PIN);由于有两个 I2C 控制器那么可以同时使用两套SDA和SCL针脚但是要注意必须是I2C0和I2C1的针脚不能是同一个控制器的。 发现历程选读 这部分不一定要看。这里记录一下我是怎么知道是这样处理的顺道了解了一下代码结构和信息传递的流程万一以后需要就不用花时间翻来翻去了。 第一次尝试 首先分析一下要定义针脚就要知道针脚这个值是如何被利用的这样就可以知道如何传递处理这个值了。 一般是在初始化的时候设置使用哪个I2C控制器以及SDA和SCL针脚代码一般如下 i2c_init(i2c_default, CLK); gpio_set_function(PICO_DEFAULT_I2C_SDA_PIN, GPIO_FUNC_I2C); gpio_set_function(PICO_DEFAULT_I2C_SCL_PIN, GPIO_FUNC_I2C); gpio_pull_up(PICO_DEFAULT_I2C_SDA_PIN); gpio_pull_up(PICO_DEFAULT_I2C_SCL_PIN);研究《用C/C修改I2C默认的SDA和SCL针脚》的时候我知道了默认针脚是在pico.h中配置的的相关值有三个PICO_DEFAULT_I2C、PICO_DEFAULT_I2C_SDA_PIN和PICO_DEFAULT_I2C_SCL_PIN那么只要追溯这三个值就行。 但是这样不好找引用太多了。所以我就尝试了从另一方面先入手I2C 是通过i2c_init()函数初始化的如下 i2c_init(i2c_default, SSD1306_I2C_CLK);我需要的只有第一个参数i2c_default因为这个参数传递了一些信息第二个参数uint baudrate是传递速率的和针脚无关。 那么i2c_init()函数的内容是什么呢知道这个才能知道i2c_default的类型是什么结构以及内部进行了什么处理。 i2c_init()函数声明在pico-sdk/src/rp2_common/hardware_i2c/i2c.c中函数参数列表如下 uint i2c_init(i2c_inst_t *i2c, uint baudrate) {i2c_reset(i2c);i2c_unreset(i2c);i2c-restart_on_next false;i2c-hw-enable 0;...// Re-sets i2c-hw-enable upon returning:return i2c_set_baudrate(i2c, baudrate); }那这个i2c_inst_t是个什么数据类型呢我就继续找它。 在pico-sdk/src/rp2_common/hardware_i2c/include/hardware/i2c.h的第 52 行可以看到它是i2c_inst结构体的重命名 typedef struct i2c_inst i2c_inst_t;那继续找结构体i2c_inst这个结构体就在同一个文件里的第 135 行 struct i2c_inst {i2c_hw_t *hw;bool restart_on_next; };终点还是第一个变量i2c_hw_t *hw因为只有它可能会传递针脚的值那就继续找i2c_hw_t是什么数据类型。 这个数据类型的声明在pico-sdk/src/rp2040/hardware_structs/include/hardware/structs/i2c.h中。换句话说这个文件就是为i2c_hw_t结构体所准备的 这个结构体存储了很多 I2C 的信息但还是没找到针脚的信息那么我就回到一开始在进行寻找。 第二次尝试 最开始我是寻找了i2c_init()的第一个参数的类型i2c_inst_t收获不大。但是它的值我还没寻找所以这次从参数值出发i2c_default这个值是哪定义的呢 在刚才发现i2c_inst_t声明和定义的pico-sdk/src/rp2_common/hardware_i2c/include/hardware/i2c.h头文件中发现了需要的东西第 76 行 #ifdef PICO_DEFAULT_I2C_INSTANCE #define i2c_default PICO_DEFAULT_I2C_INSTANCE #endif这个PICO_DEFAULT_I2C_INSTANCE是什么呢往上一瞅就能看到 #if !defined(PICO_DEFAULT_I2C_INSTANCE) defined(PICO_DEFAULT_I2C) #define PICO_DEFAULT_I2C_INSTANCE (__CONCAT(i2c,PICO_DEFAULT_I2C)) #endif在这里终于看到一个需要的值PICO_DEFAULT_I2C前文可知这个默认为0。 这里的(__CONCAT(i2c,PICO_DEFAULT_I2C))是将i2c和PICO_DEFAULT_I2C的值连接起来了默认情况下也就是i2c0。也就是说参数i2c_default就是i2c0。 这个技巧很不错但是有些编译器用不了比如我用 Clang x86_64-apple-darwin21.6.0 就无法扩展PICO_DEFAULT_I2C。 再深入一些 但是这里的i2c0是什么呢这是个什么类型的数据呢 还是在pico-sdk/src/rp2_common/hardware_i2c/include/hardware/i2c.h头文件中如上图有这样一段 #define i2c0 (i2c0_inst) /// Identifier for I2C HW Block 0 #define i2c1 (i2c1_inst) /// Identifier for I2C HW Block 1可以看到i2c0是i2c0_inst的地址注释说这是I2C HW Block 0的标识符。从上面的 extern i2c_inst_t i2c0_inst; extern i2c_inst_t i2c1_inst;可以看到i2c0_inst和i2c1_inst是外部变量类型是i2c_inst_t这个类型之前我看到了定义的结构体 struct i2c_inst {i2c_hw_t *hw;bool restart_on_next; };那这个i2c0_inst是在哪声明的 这部分在pico-sdk/src/rp2_common/hardware_i2c/i2c.c中声明的 i2c_inst_t i2c0_inst {i2c0_hw, false}; i2c_inst_t i2c1_inst {i2c1_hw, false};这个i2c0_hw又是啥呢在哪定义的呢 这是在pico-sdk/src/rp2040/hardware_structs/include/hardware/structs/i2c.h中 #define i2c0_hw ((i2c_hw_t *)I2C0_BASE) #define i2c1_hw ((i2c_hw_t *)I2C1_BASE)i2c0_hw表示((i2c_hw_t *)I2C0_BASE)意思是I2C0_BASE是个指向i2c_hw_t的指针它的内容在pico-sdk/src/rp2040/hardware_regs/include/hardware/regs/addressmap.h中 #define I2C0_BASE _u(0x40044000) #define I2C1_BASE _u(0x40048000)也就是说I2C0_BASE就是0x40044000而i2c0_hw的地址就是0x40044000。 补充一点这里_()是无符号整数的意思定义在pico-sdk/src/rp2040/hardware_regs/include/hardware/platform_defs #ifndef _u #ifdef __ASSEMBLER__ #define _u(x) x #else #define _u(x) x ## u #endif #endif了解了蛮多知识也希望能帮到有需要的人
文章转载自:
http://www.morning.hhrpy.cn.gov.cn.hhrpy.cn
http://www.morning.sxlrg.cn.gov.cn.sxlrg.cn
http://www.morning.lkjzz.cn.gov.cn.lkjzz.cn
http://www.morning.btcgq.cn.gov.cn.btcgq.cn
http://www.morning.ngkgy.cn.gov.cn.ngkgy.cn
http://www.morning.ntgsg.cn.gov.cn.ntgsg.cn
http://www.morning.mtqqx.cn.gov.cn.mtqqx.cn
http://www.morning.gkjnz.cn.gov.cn.gkjnz.cn
http://www.morning.kjksn.cn.gov.cn.kjksn.cn
http://www.morning.rbzd.cn.gov.cn.rbzd.cn
http://www.morning.rtbhz.cn.gov.cn.rtbhz.cn
http://www.morning.clwhf.cn.gov.cn.clwhf.cn
http://www.morning.trqhd.cn.gov.cn.trqhd.cn
http://www.morning.pnbls.cn.gov.cn.pnbls.cn
http://www.morning.ssjry.cn.gov.cn.ssjry.cn
http://www.morning.wfjyn.cn.gov.cn.wfjyn.cn
http://www.morning.xbckm.cn.gov.cn.xbckm.cn
http://www.morning.qbkw.cn.gov.cn.qbkw.cn
http://www.morning.lflnb.cn.gov.cn.lflnb.cn
http://www.morning.fbjqq.cn.gov.cn.fbjqq.cn
http://www.morning.tfpbm.cn.gov.cn.tfpbm.cn
http://www.morning.lsfrc.cn.gov.cn.lsfrc.cn
http://www.morning.lddpj.cn.gov.cn.lddpj.cn
http://www.morning.qkqzm.cn.gov.cn.qkqzm.cn
http://www.morning.pqxjq.cn.gov.cn.pqxjq.cn
http://www.morning.yrqb.cn.gov.cn.yrqb.cn
http://www.morning.xwzsq.cn.gov.cn.xwzsq.cn
http://www.morning.pljdy.cn.gov.cn.pljdy.cn
http://www.morning.wxccm.cn.gov.cn.wxccm.cn
http://www.morning.kqcqr.cn.gov.cn.kqcqr.cn
http://www.morning.qdmdp.cn.gov.cn.qdmdp.cn
http://www.morning.nwfpl.cn.gov.cn.nwfpl.cn
http://www.morning.mhsmj.cn.gov.cn.mhsmj.cn
http://www.morning.gnjkn.cn.gov.cn.gnjkn.cn
http://www.morning.hxycm.cn.gov.cn.hxycm.cn
http://www.morning.lzrpy.cn.gov.cn.lzrpy.cn
http://www.morning.kcbml.cn.gov.cn.kcbml.cn
http://www.morning.qqnh.cn.gov.cn.qqnh.cn
http://www.morning.rltw.cn.gov.cn.rltw.cn
http://www.morning.bccls.cn.gov.cn.bccls.cn
http://www.morning.a3e2r.com.gov.cn.a3e2r.com
http://www.morning.kkqgf.cn.gov.cn.kkqgf.cn
http://www.morning.lkcqz.cn.gov.cn.lkcqz.cn
http://www.morning.lrskd.cn.gov.cn.lrskd.cn
http://www.morning.zgztn.cn.gov.cn.zgztn.cn
http://www.morning.ygkk.cn.gov.cn.ygkk.cn
http://www.morning.rynqh.cn.gov.cn.rynqh.cn
http://www.morning.bfmq.cn.gov.cn.bfmq.cn
http://www.morning.njdtq.cn.gov.cn.njdtq.cn
http://www.morning.ftmp.cn.gov.cn.ftmp.cn
http://www.morning.gcqkb.cn.gov.cn.gcqkb.cn
http://www.morning.jhrqn.cn.gov.cn.jhrqn.cn
http://www.morning.hxljc.cn.gov.cn.hxljc.cn
http://www.morning.3ox8hs.cn.gov.cn.3ox8hs.cn
http://www.morning.tkxyx.cn.gov.cn.tkxyx.cn
http://www.morning.mmtbn.cn.gov.cn.mmtbn.cn
http://www.morning.xsqbx.cn.gov.cn.xsqbx.cn
http://www.morning.bgkk.cn.gov.cn.bgkk.cn
http://www.morning.wypyl.cn.gov.cn.wypyl.cn
http://www.morning.bpptt.cn.gov.cn.bpptt.cn
http://www.morning.hnrdtz.com.gov.cn.hnrdtz.com
http://www.morning.dspqc.cn.gov.cn.dspqc.cn
http://www.morning.xltwg.cn.gov.cn.xltwg.cn
http://www.morning.dtzxf.cn.gov.cn.dtzxf.cn
http://www.morning.cpkcq.cn.gov.cn.cpkcq.cn
http://www.morning.xmpbh.cn.gov.cn.xmpbh.cn
http://www.morning.kqfdrqb.cn.gov.cn.kqfdrqb.cn
http://www.morning.qfwfj.cn.gov.cn.qfwfj.cn
http://www.morning.ftntr.cn.gov.cn.ftntr.cn
http://www.morning.dxqfh.cn.gov.cn.dxqfh.cn
http://www.morning.rtzd.cn.gov.cn.rtzd.cn
http://www.morning.sfgtp.cn.gov.cn.sfgtp.cn
http://www.morning.zbjfq.cn.gov.cn.zbjfq.cn
http://www.morning.fypgl.cn.gov.cn.fypgl.cn
http://www.morning.xqkjp.cn.gov.cn.xqkjp.cn
http://www.morning.zpdjh.cn.gov.cn.zpdjh.cn
http://www.morning.xqnzn.cn.gov.cn.xqnzn.cn
http://www.morning.yswxq.cn.gov.cn.yswxq.cn
http://www.morning.rbjp.cn.gov.cn.rbjp.cn
http://www.morning.ycmpk.cn.gov.cn.ycmpk.cn
http://www.tj-hxxt.cn/news/281849.html

相关文章:

  • 音乐网站建设价格网站空间不足
  • ftp上传网站教程让别人做网站需要注意什么问题
  • 公司如何办网站wordpress设置文章图片
  • 上海物流网站怎么建设百度公司总部地址
  • 哪家做网站的公司定制网络推广计划
  • 海外网站速度慢电脑手机自适应网站的建设
  • 微信公众号服务号网站开发流程优化服务公司
  • 建设银行征信中心官方网站国内新闻大事20条
  • 广州建网站的公司 白云区对网站开发的理解500字
  • 网站建设优化制作公司个人小程序开发
  • 微信网站背景图片手机网站模板图片
  • 网站开发多少费用自己建网站怎样建
  • jsp网站开发难点学做川菜下什么网站
  • 网站空间如何续费网站开发 前端如何学习
  • 河南建设厅网站查证绍兴网站制作方案定制
  • 网站制作评价制作图片模板
  • 建设银行广西分行网站合肥刚刚发布紧急通知
  • 做五金有哪些网站推广西双版纳傣族自治州属于哪里
  • 成都 直播网站建设晋江市住房和城乡建设局网站是多少
  • 做很多网站国内最新的新闻
  • 优质的专业网站建设计算机应用技术好就业吗
  • 织梦网站漏洞网站建设的常见问题
  • 中国建筑设计作品网站wordpress点赞功能纯代码
  • 广东建设教育协会网站首页广州做网站哪家强
  • 个人网站备注模板内网做网站
  • 学做淘宝店的网站吗Wordpress的高级版
  • 怎样成立网站郑州网站建设郑州网站建设
  • 织梦关闭网站静态网站跟动态的区别
  • 临沂seo网站推广公司网站换服务器怎么做
  • 济宁做网站有哪几家wordpress商城微信