打印
[技术问答]

HC32F072点灯

[复制链接]
2217|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
maudlu|  楼主 | 2024-4-14 21:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

看看原理图,确定板子上LED灯对应的引脚

开发板有两个LED,分别连接芯片的PB0和PA8引脚。

3 学习参考样例的核心代码,main.c

keil的工程路径:官网提供的驱动库及样例的压缩包解压后

xxx\hc32f072_ddl_Rev1.1.1\example\gpio\gpio_output\MDK\ gpio_output.uvprojx

#include "gpio.h"static void App_LedInit(void);int32_t main(void){    ///< LED端口初始化    App_LedInit();    while(1)    {        ///< LED点亮        Gpio_SetIO(EVB_LEDR_PORT, EVB_LEDR_PIN);        delay1ms(1000);        ///< LED关闭        Gpio_ClrIO(EVB_LEDR_PORT, EVB_LEDR_PIN);        delay1ms(1000);    }}static void App_LedInit(void){    stc_gpio_cfg_t stcGpioCfg;        ///< 打开GPIO外设时钟门控    Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio, TRUE);         ///< 端口方向配置->输出(其它参数与以上(输入)配置参数一致)    stcGpioCfg.enDir = GpioDirOut;    ///< 端口上下拉配置->下拉    stcGpioCfg.enPu = GpioPuDisable;    stcGpioCfg.enPd = GpioPdEnable;        ///< LED关闭    Gpio_ClrIO(EVB_LEDR_PORT, EVB_LEDR_PIN);        ///< GPIO IO LED端口初始化    Gpio_Init(EVB_LEDR_PORT, EVB_LEDR_PIN, &stcGpioCfg);    }4 我们自己的代码

参考样例给予我们的思路:

首先需要对LED对应引脚的端口进行配置,比如输出方向,上拉下拉的使能。

然后在while(1)里面延迟1s对端口的输出电平来回修改,造成闪烁。

main.c

#include "ddl.h"#include "gpio.h"#include "user_gpio.h"int32_t main(void){           user_ledinit();                while (1){                Gpio_SetIO(LED1_PORT, LED1_PIN);                Gpio_SetIO(LED2_PORT, LED2_PIN);                                delay1ms(500);                                Gpio_ClrIO(LED1_PORT, LED1_PIN);                Gpio_ClrIO(LED2_PORT, LED2_PIN);                                delay1ms(500);        }}

user_gpio.c 我们专门添加一个文件,来写我们自己对gpio的配置,以便于后续其他功能的添加

#include "user_gpio.h"#include "gpio.h"void user_ledinit(void){        stc_gpio_cfg_t stcGpioCfg;                        // GPIO 端口配置结构体定义                stcGpioCfg.enDir        = GpioDirOut;                // 输出方向        stcGpioCfg.enPu                = GpioPuDisable;        // 上拉        stcGpioCfg.enPd                = GpioPdEnable;                // 下拉            // 打开GPIO外设时钟门控        Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio, TRUE);            Gpio_ClrIO(LED1_PORT, LED1_PIN);                //  GPIO IO清零    注意: Clr是Clear的简写        Gpio_ClrIO(LED2_PORT, LED2_PIN);                        Gpio_Init(LED1_PORT, LED1_PIN, &stcGpioCfg);        // 把配置写入        Gpio_Init(LED2_PORT, LED2_PIN, &stcGpioCfg);                }

user_gpio.h, 一个.c自然就要对应一个.h文件

#ifndef _USER_GPIO_H_#define _USER_GPIO_H_#define LED1_PORT        GpioPortA#define LED1_PIN         GpioPin8#define LED2_PORT        GpioPortB#define LED2_PIN         GpioPin0void user_ledinit(void);        #endif

使用特权

评论回复
沙发
tpgf| | 2024-5-8 08:33 | 只看该作者
代码太乱了  感觉条理性不太好

使用特权

评论回复
板凳
heimaojingzhang| | 2024-5-8 09:37 | 只看该作者
如果想要点亮小灯 单片机的io口都可以配置成什么模式呢

使用特权

评论回复
地板
keaibukelian| | 2024-5-8 10:39 | 只看该作者
使用引脚来直接点灯的话 需要加多大的上拉电阻呢

使用特权

评论回复
5
renzheshengui| | 2024-5-8 22:51 | 只看该作者
为什么在主函数里边没有对时钟初始化的代码呢

使用特权

评论回复
6
paotangsan| | 2024-5-8 23:24 | 只看该作者
将io口清零的目的是什么呢  另外也没有必要将所有的io口这样操作吧

使用特权

评论回复
7
guanjiaer| | 2024-5-8 23:57 | 只看该作者
楼主想要实现什么样的点灯效果呢

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

28

主题

1342

帖子

0

粉丝