IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 启明云端分享:ESP32C3简单IO及串口小贴士 -> 正文阅读

[嵌入式]启明云端分享:ESP32C3简单IO及串口小贴士

  1. 指定芯片
    编译前应注意应先设置目标芯片 设置指令 :

idf.py set-target esp32c3

注意,此操作将清除并初始化项目之前的编译和配置(如有)

否则将报错 如下 :
在这里插入图片描述

默认配置为ESP32如果使用的是ESP32的话则不需要这句

idf.py set-target esp32c3

  1. 烧入已经生成的文件

在这里插入图片描述
在这里插入图片描述

编译, idf.py -p COM5 flash 烧入

在这里插入图片描述

  1. 硬件 连接
    在这里插入图片描述

接线 : 18脚接rgb灯的 G段显绿色 19接rgb灯的B段

显示为青色, 这里的18可以和19调换, 因为点亮的时间与强度一致

  1. GPIO初始化
    接着最简单也是最重要的IO初始化及输出

gpio_config_t io_conf; //创建io配置结构体

io_conf.intr_type = GPIO_INTR_DISABLE; //禁用中断

io_conf.mode = GPIO_MODE_OUTPUT; //设置为输出模式

io_conf.pin_bit_mask = GPIO_OUTPUT_PIN_SEL;

//io脚位掩码, 用位运算 左移到需要改变的位进行操作

//#define GPIO_OUTPUT_PIN_SEL ((1ULL<<GPIO_OUTPUT_IO_0/18/) | \

//(1ULL<<GPIO_OUTPUT_IO_1/19/))

//该宏便是先将1强转类型为无符号长整型左移再或运算使得18,19一起配置为输出

io_conf.pull_down_en = 0; //下拉模式使能 关闭

io_conf.pull_up_en = 0; //上拉模式使能 打开

gpio_config(&io_conf); //gpio配置

  1. 输出控制
    输出已经配置好了

gpio_set_level(GPIO_OUTPUT_IO_0, 0); //18脚设置为低电平

gpio_set_level(GPIO_OUTPUT_IO_1, 1); //19脚设置为高电平

  1. 接收初始化
    这个时候输出已经好了,接着便是接收

//interrupt of rising edge

io_conf.intr_type = GPIO_INTR_POSEDGE; //设置上升沿中断

//bit mask of the pins, use GPIO4/5 here

io_conf.pin_bit_mask = GPIO_INPUT_PIN_SEL; //io脚位掩码, 用位运算 左移到需要改变的位进行操作

//set as input mode

io_conf.mode = GPIO_MODE_INPUT; //设置为输入模式

//enable pull-up mode

io_conf.pull_up_en = 1; //上拉模式使能 打开

gpio_config(&io_conf);

接收有中断接收和读取IO电压接收

中断接收优点 : 相对于实时读取

读取IO优点 : 简单易操作

  1. 获取输入电平
    读取IO :

Int IO0_level = gpio_get_level( GPIO_INPUT_IO_0); /返回值为读取的IO_0的高低电平/

中断加线程 :

//change gpio intrrupt type for one pin

gpio_set_intr_type(GPIO_INPUT_IO_0, GPIO_INTR_ANYEDGE);

//改变一个pin的 中断类型

//create a queue to handle gpio event from isr

gpio_evt_queue = xQueueCreate(10, sizeof(uint32_t)); //创建一个新的队列

//start gpio task

xTaskCreate(gpio_task_example, “gpio_task_example”, 2048, NULL, 10, NULL); //开线程跑函数gpio_task_example

//install gpio isr service

gpio_install_isr_service(ESP_INTR_FLAG_DEFAULT); //为相应的 GPIO 引脚添加 ISR 处理程序

//hook isr handler for specific gpio pin

gpio_isr_handler_add(GPIO_INPUT_IO_0, gpio_isr_handler, (void*) GPIO_INPUT_IO_0); //为相应GPIO添加ISR处理程序

//hook isr handler for specific gpio pin

gpio_isr_handler_add(GPIO_INPUT_IO_1, gpio_isr_handler, (void*) GPIO_INPUT_IO_1); //为相应GPIO添加ISR处理程序

//remove isr handler for gpio number.

gpio_isr_handler_remove(GPIO_INPUT_IO_0); //删除相应的ISR程序 这里测试对应函数功能

//hook isr handler for specific gpio pin again

gpio_isr_handler_add(GPIO_INPUT_IO_0, gpio_isr_handler, (void*) GPIO_INPUT_IO_0); //再次添加

static void IRAM_ATTR gpio_isr_handler(void* arg)

{

uint32_t gpio_num = (uint32_t) arg;

xQueueSendFromISR(gpio_evt_queue, &gpio_num, NULL);

}

static void gpio_task_example(void* arg)

{

uint32_t io_num;

for(;😉

{

if(xQueueReceive(gpio_evt_queue, &io_num, portMAX_DELAY))

    {

printf(“GPIO[%d] intr, val: %d\n”, io_num, gpio_get_level(io_num));

    }

}

}

具体的demo在已下载好的 esp-idf\examples\peripherals\gpio\gpio\generic_gpio

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-09-07 10:59:11  更:2021-09-07 10:59:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 1:56:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码