完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
使用查询方式检测按键
2)、官方裸机编程指导手册:kendryte_standalone_programming_guide,用于查阅SDK中接口说明。
1)、设置引脚复用功能:由硬件原理图可知:我们需要将IO12和IO16设置为GPIOHS功能,如下图: #include #include #include #define LED_R_PIN (12) #define LED_R_GPIOHSNUM (0) #define LED_R_FUNC (FUNC_GPIOHS0+LED_R_GPIOHSNUM) #define KEY_BT1_PIN (16) #define KEY_BT1_GPIOHSNUM (1) #define KEY_BT1_FUNC (FUNC_GPIOHS0+KEY_BT1_GPIOHSNUM) /********************************* * 管脚功能初始化 ********************************/ void init_hardware(void) { // 将红色LED管脚设置复用为GPIOHS fpioa_set_function(LED_R_PIN, LED_R_FUNC); // 将按键管脚设置复用为GPIOHS fpioa_set_function(KEY_BT1_PIN, KEY_BT1_FUNC); } /********************************* * LED初始化 ********************************/ void init_led(gpio_pin_value_t value) { // 设置输出 gpiohs_set_drive_mode(LED_R_GPIOHSNUM, GPIO_DM_OUTPUT); // 设置初始电平状态 gpiohs_set_pin(LED_R_GPIOHSNUM, value); } /********************************* * 控制LED亮灭 ********************************/ void ctl_led(gpio_pin_value_t value) { gpiohs_set_pin(LED_R_GPIOHSNUM, value); } /********************************* * 按键初始化 ********************************/ void init_key(void) { // 设置输入 gpiohs_set_drive_mode(KEY_BT1_GPIOHSNUM, GPIO_DM_INPUT); } /********************************* * 获取按键状态 ********************************/ gpio_pin_value_t get_key_statue(void) { return gpiohs_get_pin(KEY_BT1_GPIOHSNUM); } int main() { gpio_pin_value_t led_r_value = GPIO_PV_HIGH; // LED初始电平 unsigned char key_release_flag = 0; // 按键松手标志 init_hardware(); // 设置管脚复用功能 init_led(led_r_value); // led初始化 init_key(); // 按键初始化 while(1) { if(get_key_statue() == 0 && key_release_flag == 0) // 按键按下 { led_r_value = !led_r_value; ctl_led(led_r_value); key_release_flag = 1; } else if(get_key_statue() == 1 && key_release_flag == 1) // 按键松开 { key_release_flag = 0; } else { key_release_flag = key_release_flag; } } return 0; }
|
|
|
|
只有小组成员才能发言,加入小组>>
imx6ull 和 lan8742 工作起来不正常, ping 老是丢包
3449 浏览 0 评论
3401 浏览 9 评论
3086 浏览 16 评论
3573 浏览 1 评论
9243 浏览 16 评论
1354浏览 3评论
695浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
696浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2444浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
2010浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-3-20 22:03 , Processed in 1.163437 second(s), Total 79, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191