完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
//#define KEY1 3 // 按键连接到GPIO引脚3
//#define LED1 1 // LED连接到GPIO引脚1 int main(void) { // 配置LED GPIO GPIO_REG(GPIO_INPUT_EN) &= ~(0x1 << LED1); // 关闭LED GPIO的输入使能 GPIO_REG(GPIO_OUTPUT_EN) |= (0x1 << LED1); // 打开LED GPIO的输出使能 GPIO_REG(GPIO_OUTPUT_VAL) &= ~(0x1 << LED1); // 初始化为关闭状态 printf(“LED GPIO configured.n”); // 配置按键GPIOGPIO_REG(GPIO_OUTPUT_EN) &= ~(0x1 << KEY1); // 关闭按键GPIO的输出使能GPIO_REG(GPIO_PULLUP_EN) |= (0x1 << KEY1); // 打开按键GPIO的输入上拉GPIO_REG(GPIO_INPUT_EN) |= (0x1 << KEY1); // 打开按键GPIO的输入使能printf("Button GPIO configured.n");uint8_t led_state = 0; // LED当前状态,0表示关闭,1表示打开uint8_t last_button_state = 1; // 上一次按键状态,初始化为未按下(高电平)while (1) { // 读取按键状态 uint8_t button_state = (GPIO_REG(GPIO_INPUT_VAL) & (0x1 << KEY1)) == 0 ? 0 : 1; // 检测按键的下降沿(从未按下到按下的过渡) if (button_state == 0 && last_button_state == 1) { // 切换LED状态 led_state = !led_state; if (led_state) { GPIO_REG(GPIO_OUTPUT_VAL) |= (0x1 << LED1); // 点亮LED printf("LED ONn"); } else { GPIO_REG(GPIO_OUTPUT_VAL) &= ~(0x1 << LED1); // 熄灭LED printf("LED OFFn"); } } // 更新上一次按键状态 last_button_state = button_state;}return 0;} |
|
相关推荐
1个回答
|
|
|
从你提供的代码片段来看,问题可能出在以下几个方面: 1. GPIO配置问题
2. 硬件连接问题
3. 代码逻辑问题
4. 寄存器定义问题
5. 其他问题
调试建议
示例代码通过以上步骤,你应该能够找到LED不亮的原因并解决问题。 |
|
|
|
|
只有小组成员才能发言,加入小组>>
在软件SDK中选择不同的下载模式时,是哪个部件更改了QSPI0中寄存器的值?
656 浏览 2 评论
cmt_instret_ena的使能为什么要排除branch等指令造成流水线冲刷的情况?
830 浏览 1 评论
e203 rom启动仅仅是引导到itcm执行指令吗?flash启动就是加载指令到itcm中吗?
956 浏览 1 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-1 20:03 , Processed in 0.610521 second(s), Total 73, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
644
