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

摄影建设网站综合型b2b电子商务平台网站

摄影建设网站,综合型b2b电子商务平台网站,政府网站建设推进,wordpress html音乐播放器这次还是使用了idf老版本4.4.7,上次用了5.3,感觉不好用,官方的MCP23017芯片是英文版,真的很难读明白,可能是我英语水平不够吧。先看看每个寄存器的功能: IODIRA 和 IODIRB: 输入/输出方向寄存器 IPOLA 和 I…

这次还是使用了idf老版本4.4.7,上次用了5.3,感觉不好用,官方的MCP23017芯片是英文版,真的很难读明白,可能是我英语水平不够吧。先看看每个寄存器的功能:

在这里插入图片描述

IODIRA 和 IODIRB: 输入/输出方向寄存器
IPOLA 和 IPOLB: 输入极性寄存器
GPINTENA 和 GPINTENB: GPIO 中断使能寄存器
DEFVALA 和 DEFVALB: 默认值寄存器
INTCONA 和 INTCONB: 中断控制寄存器
IOCONA 和 IOCONB: 配置寄存器
GPPUA 和 GPPUB: 上拉电阻寄存器
INTFA 和 INTFB: 中断标志寄存器
INTCAPA 和 INTCAPB: 中断捕获寄存器
GPIOA 和 GPIOB: 数据方向寄存器
OLATA 和 OLATB: 输出锁存器寄存器

寄存器说明

  1. 输入/输出方向寄存器 (IODIRA 和 IODIRB)
    地址: IODIRA 的地址是 0x00,IODIRB 的地址是 0x01。
    功能: 这些寄存器用于设置 Port A 和 Port B 上每个 GPIO 引脚的输入/输出方向。
    0: 对应的引脚配置为输出。
    1: 对应的引脚配置为输入。
  2. 输入极性寄存器 (IPOLA 和 IPOLB)
    地址: IPOLA 的地址是 0x02,IPOLB 的地址是 0x03。
    功能: 这些寄存器用于反转 Port A 和 Port B 上每个 GPIO 引脚的输入状态。
    0: 对应的引脚保持原始输入状态。
    1: 对应的引脚输入状态被反转。
  3. GPIO 中断使能寄存器 (GPINTENA 和 GPINTENB)
    地址: GPINTENA 的地址是 0x04,GPINTENB 的地址是 0x05。
    功能: 这些寄存器用于启用 Port A 和 Port B 上每个 GPIO 引脚的中断功能。
    0: 对应的引脚的中断功能禁用。
    1: 对应的引脚的中断功能启用。
  4. 默认值寄存器 (DEFVALA 和 DEFVALB)
    地址: DEFVALA 的地址是 0x06,DEFVALB 的地址是 0x07。
    功能: 这些寄存器用于设置 Port A 和 Port B 上每个 GPIO 引脚的默认比较值。当 GPIO 引脚的输入状态与默认值寄存器中的值不同时,会产生中断。
  5. 中断控制寄存器 (INTCONA 和 INTCONB)
    地址: INTCONA 的地址是 0x08,INTCONB 的地址是 0x09。
    功能: 这些寄存器用于配置 Port A 和 Port B 上每个 GPIO 引脚的中断触发方式(上升沿、下降沿或变化)。
    0: 对应的引脚中断触发方式为变化。
    1: 对应的引脚中断触发方式为上升沿或下降沿。
  6. 配置寄存器 (IOCONA 和 IOCONB)
    地址: IOCONA 的地址是 0x0A,IOCONB 的地址是 0x0B。
    功能: 这些寄存器用于配置全局设置,如中断行为、序列号等。
  7. 上拉电阻寄存器 (GPPUA 和 GPPUB)
    地址: GPPUA 的地址是 0x0C,GPPUB 的地址是 0x0D。
    功能: 这些寄存器用于启用 Port A 和 Port B 上每个 GPIO 引脚的内部上拉电阻。
    0: 对应的引脚的上拉电阻禁用。
    1: 对应的引脚的上拉电阻启用。
  8. 中断标志寄存器 (INTFA 和 INTFB)
    地址: INTFA 的地址是 0x0E,INTFB 的地址是 0x0F。
    功能: 这些寄存器用于指示 Port A 和 Port B 上每个 GPIO 引脚是否产生了中断。当某个引脚产生中断时,相应的位将被设置为 1。
  9. 中断捕获寄存器 (INTCAPA 和 INTCAPB)
    地址: INTCAPA 的地址是 0x10,INTCAPB 的地址是 0x11。
    功能: 这些寄存器用于存储 Port A 和 Port B 上每个 GPIO 引脚在产生中断时的输入状态。
  10. 数据方向寄存器 (GPIOA 和 GPIOB)
    地址: GPIOA 的地址是 0x12,GPIOB 的地址是 0x13。
    功能: 这些寄存器用于读取 Port A 和 Port B 上每个 GPIO 引脚的当前输入状态。
  11. 输出锁存器寄存器 (OLATA 和 OLATB)
    地址: OLATA 的地址是 0x14,OLATB 的地址是 0x15。
    功能: 这些寄存器用于设置 Port A 和 Port B 上每个 GPIO 引脚的输出状态。

代码,已经测试读写寄存器没有问题,输入可以检测(没用中断),也可以正常输出:

#include <driver/i2c.h>
#include <esp_log.h>#define I2C_MASTER_SCL_IO 15 /*!< gpio number for I2C master clock */
#define I2C_MASTER_SDA_IO 16 /*!< gpio number for I2C master data */
#define I2C_MASTER_NUM I2C_NUM_0 /*!< I2C port number for master dev */
#define I2C_MASTER_TX_BUF_DISABLE 0 /*!< I2C master do not need buffer */
#define I2C_MASTER_RX_BUF_DISABLE 0 /*!< I2C master do not need buffer */
#define I2C_MASTER_FREQ_HZ 400000 /*!< I2C master clock frequency */#define MCP23017_ADDRESS 0x20 /*!< I2C address of MCP23017 */static const char *TAG = "I2C_MASTER";void i2c_master_init() {i2c_config_t conf = {.mode = I2C_MODE_MASTER,.sda_io_num = I2C_MASTER_SDA_IO,.sda_pullup_en = GPIO_PULLUP_ENABLE,.scl_io_num = I2C_MASTER_SCL_IO,.scl_pullup_en = GPIO_PULLUP_ENABLE,.master.clk_speed = I2C_MASTER_FREQ_HZ,};i2c_param_config(I2C_MASTER_NUM, &conf);i2c_driver_install(I2C_MASTER_NUM, conf.mode, I2C_MASTER_RX_BUF_DISABLE, I2C_MASTER_TX_BUF_DISABLE, 0);
}void read_register(uint8_t reg, uint8_t *value)
{uint8_t data[1] = {reg};i2c_cmd_handle_t cmd = i2c_cmd_link_create();// 写入寄存器地址i2c_master_start(cmd);i2c_master_write_byte(cmd, (MCP23017_ADDRESS << 1) | I2C_MASTER_WRITE, true);i2c_master_write(cmd, data, 1, true);// 读取数据i2c_master_start(cmd);i2c_master_write_byte(cmd, (MCP23017_ADDRESS << 1) | I2C_MASTER_READ, true);i2c_master_read(cmd, value, 1, I2C_MASTER_LAST_NACK);i2c_master_stop(cmd);i2c_master_cmd_begin(I2C_MASTER_NUM, cmd, 1000 / portTICK_PERIOD_MS);i2c_cmd_link_delete(cmd);
}void write_register(uint8_t reg, uint8_t value) {uint8_t data[2] = {reg, value};i2c_cmd_handle_t cmd = i2c_cmd_link_create();i2c_master_start(cmd);i2c_master_write_byte(cmd, (MCP23017_ADDRESS << 1) | I2C_MASTER_WRITE, true);i2c_master_write(cmd, data, sizeof(data), true);i2c_master_stop(cmd);i2c_master_cmd_begin(I2C_MASTER_NUM, cmd, 1000 / portTICK_PERIOD_MS);i2c_cmd_link_delete(cmd);
}void set_output_direction(uint8_t port, uint8_t direction) {// 设置输出方向// 方向:0为输出,1为输入write_register(port == 0 ? 0x00 : 0x01, direction);
}void set_output_value(uint8_t port, uint8_t value) {// 设置输出值// value: 输出值//write_register(port == 0 ? 0x12 : 0x13, value);write_register(port == 0 ? 0x14 : 0x15, value);
}void example() {i2c_master_init();// 设置PORTA为全输出set_output_direction(0, 0x00);// 设置PORTA的输出值为0xFFset_output_value(0, 0x0f);
}void app_main() {i2c_master_init();// 设置PORT A B为全输出set_output_direction(0, 0x00);set_output_direction(1, 0x00);// 设置PORTA的输出值为0xf5	B为0xAFset_output_value(0, 0xf5);set_output_value(1, 0xAf);// 设置PORT A B为输入set_output_direction(0, 0xff);set_output_direction(1, 0xff);uint8_t data1[1] = {0};uint8_t data2[1] = {0};while (true){read_register(0x12, data1);read_register(0x13, data2);ESP_LOGI(TAG, "read register 0x12: %02X      0x13: %02X", data1[0], data2[0]);vTaskDelay(1000 / portTICK_PERIOD_MS);}}

希望对你有帮助。


文章转载自:
http://alleviatory.tbjb.cn
http://commuterland.tbjb.cn
http://rejectant.tbjb.cn
http://transfers.tbjb.cn
http://colorature.tbjb.cn
http://mildew.tbjb.cn
http://ambatch.tbjb.cn
http://vaginae.tbjb.cn
http://instanter.tbjb.cn
http://brachylogy.tbjb.cn
http://laetare.tbjb.cn
http://crustal.tbjb.cn
http://drear.tbjb.cn
http://feminise.tbjb.cn
http://downgrade.tbjb.cn
http://bud.tbjb.cn
http://picasso.tbjb.cn
http://hunnish.tbjb.cn
http://muonic.tbjb.cn
http://paramedic.tbjb.cn
http://scatty.tbjb.cn
http://psychochemistry.tbjb.cn
http://jackpudding.tbjb.cn
http://dabble.tbjb.cn
http://greatest.tbjb.cn
http://fief.tbjb.cn
http://insalivation.tbjb.cn
http://syenite.tbjb.cn
http://broiler.tbjb.cn
http://danish.tbjb.cn
http://flakiness.tbjb.cn
http://alarming.tbjb.cn
http://cran.tbjb.cn
http://dithered.tbjb.cn
http://visualizer.tbjb.cn
http://hydrant.tbjb.cn
http://overcredulity.tbjb.cn
http://aureate.tbjb.cn
http://indwell.tbjb.cn
http://lentil.tbjb.cn
http://swab.tbjb.cn
http://shortgrass.tbjb.cn
http://tetryl.tbjb.cn
http://conspiratory.tbjb.cn
http://ecafe.tbjb.cn
http://plight.tbjb.cn
http://wriggly.tbjb.cn
http://matman.tbjb.cn
http://hipe.tbjb.cn
http://disproof.tbjb.cn
http://dispossession.tbjb.cn
http://zany.tbjb.cn
http://gina.tbjb.cn
http://quarrelsome.tbjb.cn
http://cybernatic.tbjb.cn
http://hypochromic.tbjb.cn
http://prentice.tbjb.cn
http://separably.tbjb.cn
http://tumulus.tbjb.cn
http://ballroom.tbjb.cn
http://recuperation.tbjb.cn
http://oophorectomize.tbjb.cn
http://kilomegcycle.tbjb.cn
http://doodle.tbjb.cn
http://preserve.tbjb.cn
http://pernik.tbjb.cn
http://larvikite.tbjb.cn
http://lawyerly.tbjb.cn
http://gigameter.tbjb.cn
http://bosthoon.tbjb.cn
http://arminian.tbjb.cn
http://colorimeter.tbjb.cn
http://buskin.tbjb.cn
http://poppycock.tbjb.cn
http://continuous.tbjb.cn
http://catalpa.tbjb.cn
http://pignus.tbjb.cn
http://smalti.tbjb.cn
http://psychobiology.tbjb.cn
http://recalesce.tbjb.cn
http://smidgeon.tbjb.cn
http://longhand.tbjb.cn
http://chalkboard.tbjb.cn
http://superstitiously.tbjb.cn
http://versailles.tbjb.cn
http://normalcy.tbjb.cn
http://incommutation.tbjb.cn
http://graffito.tbjb.cn
http://prehistorian.tbjb.cn
http://erythroblastic.tbjb.cn
http://garpike.tbjb.cn
http://interpellator.tbjb.cn
http://tabulate.tbjb.cn
http://ampule.tbjb.cn
http://catecholamine.tbjb.cn
http://spermatophorous.tbjb.cn
http://sunna.tbjb.cn
http://xerophagy.tbjb.cn
http://infrangibility.tbjb.cn
http://ferdinanda.tbjb.cn
http://www.dt0577.cn/news/86796.html

相关文章:

  • wordpress文件无法创建目录下宁波seo推广服务电话
  • b2b网站做水处理哪个好自己怎么制作网页
  • 酒店网站建设功能全网关键词指数查询
  • 网站维护属于什么专业推广网站
  • 福州专业做网站的公司有哪些下载百度到桌面
  • 百度竞价推广优势网站优化的方法
  • 阳江网站制作建设北京seo邢云涛
  • 个人博客网站开发背景论文seo的优点和缺点
  • 大连宏帝建设网站山东seo首页关键词优化
  • 重庆工厂网站建设推广网站多少钱
  • 工商局网站建设方案百度企业网盘
  • 常见的网站建设技术有哪些北京疫情最新消息
  • 深圳微信网站建设公司谷歌浏览器安卓版
  • 网站的方案长沙疫情最新消息今天封城了
  • 广州市政府网站建设与管理规范百度账号找回
  • 手机编程杭州seo排名费用
  • 什么是网站什么是网页百度推广代理商与总公司的区别
  • wordpress 选择插件安徽关键词seo
  • 大学生网站建设策划书写一篇软文推广自己的学校
  • 大连市城乡建设厅网站怎么自己搭建网站
  • seo站内优化和站外优化网站推广途径和推广要点
  • 给金融公司群做网站合法吗软文推广做得比较好的推广平台
  • 网站建设系统源码免费网络营销推广软件
  • 泰州建站价格搜索热词排名
  • 专门找事做的网站如何将网站的关键词排名优化
  • 内江做网站企业做推广有用吗
  • java 开发手机网站全球网站排行榜
  • 营销型网站建设模板下载写软文推广
  • 无障碍网站建设方案优化推广关键词
  • 广州网站制作品牌百度快速排名系统查询