首页 > 其他分享 >【WCH蓝牙系列芯片】-基于CH582开发板按键控制LED灯

【WCH蓝牙系列芯片】-基于CH582开发板按键控制LED灯

时间:2023-08-07 20:25:03浏览次数:42  
标签:GPIO Pin void 开发板 GPIOA WCH CH582 LED SetBits

---------------------------------------------------------------------------------------------------------------------------------------

本文主要介绍CH582的GPIO的基础外设的使用,并且利用GPIO外设点亮LED灯和按键扫描功能。将两者结合,实现按键控制LED灯的状态。
<控制LED灯-硬件电路设计>
从沁恒官网中可以下载CH582开发板的原理图PDF版本,下载网址:https://www.wch.cn/downloads/CH583EVT_ZIP.html,

在下载的CH583EVT文件中,打开PUB>CH583SCH,在原理图中可以找到开发板上已焊接两个LED灯分别对应LED1和LED2,如图所示。

从图中可以看出,LED灯串接一个IK限流电阻,LED正极接电源3.3V,另一端接网络端口标识LED1、LED2。只需要当LED1和LED2引脚端口输出一个低电平,可以导通LED灯,使其点亮。在此实验中,采用自己焊接的LED硬件电路,如图所示。

<控制LED灯-软件程序设计>

在程序设计中,先配置系统时钟源和时钟频率,再初始化LED对应连接IO端口(PA0、PA4、PA6),设置引脚为推挽输出最大5mA模式。这样可以通过设置IO端口的高低电平控制LED状态,也可实现LED流水灯的效果。LED.C函数如下。

#include "CH58x_common.h"

void LED_Init(void)
{
   SetSysClock(CLK_SOURCE_PLL_60MHz);  //配置系统时钟源和时钟频率

   //初始化GPIO口
   GPIOA_ModeCfg(GPIO_Pin_4, GPIO_ModeOut_PP_5mA);  ////推挽输出最大5mA
   GPIOA_ModeCfg(GPIO_Pin_6, GPIO_ModeOut_PP_5mA);
   GPIOA_ModeCfg(GPIO_Pin_0, GPIO_ModeOut_PP_5mA);
}
//LED亮
void LED1_ON(void)
{
    GPIOA_ResetBits(GPIO_Pin_4); //PA4置低电平

}
//LED灭
void LED1_OFF(void)
{
    GPIOA_SetBits(GPIO_Pin_4); //PA4置高电平
}

//LED1翻转
void LED1_Turn(void)
{
    if (GPIOA_ReadPortPin(GPIO_Pin_4) == 0)  //读取PA4端口是否为低电平
    {
        GPIOA_SetBits(GPIO_Pin_4); //PA4置高电平
    }
    else
    {
        GPIOA_ResetBits(GPIO_Pin_4); //PA4置低电平
    }

}


void LED2_ON(void)
{
    GPIOA_ResetBits(GPIO_Pin_6); //PA6置低电平
}

void LED3_ON(void)
{
    GPIOA_ResetBits(GPIO_Pin_0); //PA0置低电平
}




void LED2_OFF(void)
{
    GPIOA_SetBits(GPIO_Pin_6); //PA6置高电平
}

void LED3_OFF(void)
{
    GPIOA_SetBits(GPIO_Pin_0); //PA0置高电平
}



//LED2翻转
void LED2_Turn(void)
{
    if (GPIOA_ReadPortPin(GPIO_Pin_6) == 0)
    {
        GPIOA_SetBits(GPIO_Pin_6); //PA6置高电平
    }
    else
    {
        GPIOA_ResetBits(GPIO_Pin_6); //PA6置低电平
    }

}

//LED3翻转
void LED3_Turn(void)
{
    if (GPIOA_ReadPortPin(GPIO_Pin_0) == 0)
    {
        GPIOA_SetBits(GPIO_Pin_0); //PA0置高电平
    }
    else
    {
        GPIOA_ResetBits(GPIO_Pin_0); //PA0置低电平
    }

}

//LED流水灯
void LED_RUN(void)
{
 GPIOA_ResetBits(GPIO_Pin_4);
 GPIOA_SetBits(GPIO_Pin_6);
 GPIOA_SetBits(GPIO_Pin_0);
 DelayMs(500);

 GPIOA_ResetBits(GPIO_Pin_6);
 GPIOA_SetBits(GPIO_Pin_0);
 GPIOA_SetBits(GPIO_Pin_4);
 DelayMs(500);

 GPIOA_ResetBits(GPIO_Pin_0);
 GPIOA_SetBits(GPIO_Pin_6);
 GPIOA_SetBits(GPIO_Pin_4);
 DelayMs(500);
}

void LED_shan(void)
{
    GPIOA_ResetBits(GPIO_Pin_4);
    GPIOA_ResetBits(GPIO_Pin_6);
    GPIOA_ResetBits(GPIO_Pin_0);
    DelayMs(500);

    GPIOA_SetBits(GPIO_Pin_0);
    GPIOA_SetBits(GPIO_Pin_6);
    GPIOA_SetBits(GPIO_Pin_4);
    DelayMs(500);

}

 

  

 

标签:GPIO,Pin,void,开发板,GPIOA,WCH,CH582,LED,SetBits
From: https://www.cnblogs.com/ZYL-FS/p/17612620.html

相关文章

  • 【WCH蓝牙系列芯片】-CH582固件程序烧录说明
    本文对于CH58x系列程序烧录的方法做出几点说明。在学习和使用WCH蓝牙系列过程中,这里以CH582芯片为例,对于它的固件程序烧录的方法有以下几种方法。CH582采用ISP烧录下载,ISP指在系统编程,通过单片机专门的编程接口(如串口)对单片机内部的Flash存储器进行编程改写。ISP下载模式并不需......
  • 【shipin教程】RK3568开发板系统编译与烧写
    1_本期视频介绍以及观看建议2_RK3568开发板启动模式以及引导顺序(必看)3_Android11源码包编译-获取Android11源码4_Android11源码包编译-整体编译(必看)5_Android11源码包编译-单独编译uboot6_Android11源码包编译-单独编译内核和设备树7_Android11源码包编译-单独编译Android11......
  • ARM开发板-五子棋
    c语言项目-五子棋游戏开发环境:linux虚拟机内,Ubuntu,画板。IDE:Sublime-Text编程语言:c语言最终运行环境:arm-6818开发板(800*480)所用的知识:系统io,数组,指针,内存拷贝,条件判断,循环,函数,枚举,宏定义,结构体,线程,字库设计意图:运行在arm-6818开发板的一款触摸式五子棋游戏,游戏模式为人人......
  • 联发科MTK6761_MT6761安卓核心板开发板方案定制
    MT6761安卓核心板集成了蓝牙、FM、WLAN和GPS模块,是一个高度集成的基带平台,结合了调制解调器和应用处理子系统,支持LTE/LTE-A和C2K智能手机应用。该芯片集成了工作频率高达2.0GHz的ARM®Cortex-A53和强大的多标准视频编解码器。此外,还包括一组广泛的接口和连接外围设备,用于连接相机......
  • iTOP-STM32MP157开发板一键烧写 QT 程序到开发板
    1根据上一小节设置好编译套件后,打开自己的qt工程,然后点击qtcreator里面的项目,把编译器切换成上一章节设置好的的编译器,如下图所示:2然后打开要编译的QT代码的pro文件,在里面添加以下代码,这俩行代码的意思是说把编译的可执行程序下载到开发板的/opt目录下并执行。target.pa......
  • iTOP-RK3588开发板Ubuntu 系统交叉编译 Qt 工程-命令行交叉编译
    使用源码rk3588_linux/buildroot/output/rockchip_rk3588/host/bin/qmake交叉编译QT工程。最后烧写编译好的buildroot镜像,将编译好的QT工程可执行程序在buildroot系统上运行。交叉编译QT工程如下所示,首先进入QLed的工程目录下。然后使用以下命令交叉编译QT工程,如下......
  • 高通SDM450核心板4G安卓智能模块_高通开发板方案定制
    高通SDM450安卓核心板是工业级高性能,可运行android9.0操作系统的4G智能模块。高通SDM4504G核心板采用台积电14nmFinFET制程工艺,8*Cortex-A53架构,搭载Android9.0操作系统,主频最高达1.8GHz。高通SDM450安卓核心板基本概述:高通SDM450安卓核心板是一款基于高通平台、工业级......
  • 【雕爷学编程】Arduino动手做(180)---Seeeduino Lotus开发板
    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞......
  • 迅为iTOP-RK3568开发板是怎么样的呢
    迅为iTOP-RK3568开发板是怎么样的呢CPU方面:iTOP-3568开发板采用瑞芯微RK3568处理器,内部集成了四核64位Cortex-A55处理器。主频高达2.0Ghz,RK809动态调频。集成了双核心架构GPU,ARMG522EE、支持OpenGLES1.1/2.0/32OpenCL2.0、Vulkan1.1、内嵌高性能2D加速硬件。内置独立NPU方面:算......
  • iTOP-i.MX6ULL开发板Qt 串口编程
    本章内容对应视频讲解链接(在线观看):QT上位机开发之串口助手(上)→B站搜索标题→【北京迅为】嵌入式学习之QT学习篇QT上位机开发之串口助手(下)→B站搜索标题→【北京迅为】嵌入式学习之QT学习篇本节我们使用Qt来编写一个简单的上位机。实验介绍:组装ui界面,使用Qt提供的串口类......