完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
一、查询GPIO的输入
1.使用函数:gpio_get_level 2.示例程序: #include #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "driver/gpio.h" #include "sdkconfig.h" #define INPUT_GPIO 4 void app_main() { gpio_config_t io_conf; io_conf.pin_bit_mask =1ULL< io_conf.intr_type = GPIO_PIN_INTR_DISABLE; io_conf.pull_down_en = 0; io_conf.pull_up_en = 0; gpio_config(&io_conf); while(1) { printf(" Current Input Gpio Level is : %d rnrn", gpio_get_level(INPUT_GPIO)); vTaskDelay(500); } } 二、GPIO输入中断 #include #include "esp_types.h" #include "freertos/FreeRTOS.h" #include "freertos/queue.h" #include "freertos/task.h" #include "driver/gpio.h" #include "sdkconfig.h" #define INPUT_GPIO 5 static xQueueHandle gpio_evt_queue = NULL; //定义一个队列返回变量 void IRAM_ATTR gpio_isr_handler(void* arg) { //把中断消息插入到队列的后面,将gpio的io参数传递到队列中 uint32_t gpio_num = (uint32_t) arg; xQueueSendFromISR(gpio_evt_queue, &gpio_num, NULL); } //低电平触发的回调方法 void gpio_low_interrupt_callBack(void* arg) { printf(" rn into gpio_low_interrupt_callBack ...rn "); uint32_t io_num; while (1) { //不断读取gpio队列,读取完后将删除队列 if (xQueueReceive(gpio_evt_queue, &io_num, portMAX_DELAY)) { printf("GPIO[%d] volt: %dn", io_num, gpio_get_level(io_num)); } } } void app_main() { gpio_config_t io_conf; io_conf.pin_bit_mask =1ULL< io_conf.intr_type = GPIO_INTR_NEGEDGE; io_conf.pull_down_en = 0; io_conf.pull_up_en = 1; gpio_config(&io_conf); //注册中断服务 gpio_install_isr_service(1); //设置GPIO的中断回调函数 gpio_isr_handler_add(INPUT_GPIO, gpio_isr_handler,(void*) INPUT_GPIO); //创建一个消息队列,从中获取队列句柄 gpio_evt_queue = xQueueCreate(10, sizeof(uint32_t)); //新建队列的 xTaskCreate(gpio_low_interrupt_callBack //任务函数 , "gpio_task_example" //任务名字 , 2048 //任务堆栈大小 , NULL //传递给任务函数的参数 , 10 //任务优先级 , NULL); //任務句柄 while(1) { printf("FrontDeskn"); vTaskDelay(500); } } |
|
|
|
只有小组成员才能发言,加入小组>>
3284 浏览 9 评论
2960 浏览 16 评论
3464 浏览 1 评论
9008 浏览 16 评论
4054 浏览 18 评论
1124浏览 3评论
579浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
572浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2306浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1863浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-28 14:19 , Processed in 1.128491 second(s), Total 79, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号