100-CH32V307(WCH单片机)学习开发-GPIO输出高低电平

2022-04-29 17:03:15 浏览数 (1)

测试(API函数和STM32封装的一样)

1,开发板上的led连接了PD3

2,控制PD3 输出高低电平(把以下程序直接拷贝到自己工程运行)

代码语言:javascript复制
#include "debug.h"
#include "ch32v30x.h"


#define  GPIO_PORT        (GPIOD)
#define  GPIO_PIN         (GPIO_Pin_3)

#define  GPIO_SET    (GPIO_SetBits(GPIO_PORT, GPIO_PIN))   //输出高电平
#define  GPIO_RESET  (GPIO_ResetBits(GPIO_PORT, GPIO_PIN)) //输出低电平
#define  GPIO_INPUT  (GPIO_ReadOutputDataBit(GPIO_PORT, GPIO_PIN)) //获取输入电平
#define  GPIO_TOGGLE (GPIO_WriteBit(GPIO_PORT, GPIO_PIN, 1-GPIO_INPUT)) //输出翻转

#define  GPIO_RCC_ENADLE (RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE)) //打开时钟线

/**
* @brief  init
* @param
* @param  None
* @param  None
* @retval None
* @example
**/
void gpio_init(void)
{
    GPIO_InitTypeDef  GPIO_InitStructure;

    GPIO_RCC_ENADLE;   //启动GPIO的时钟线,让时钟进去以驱动其GPIO
    GPIO_InitStructure.GPIO_Pin = GPIO_PIN;//pin
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出(最大驱动能力输出)
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//频率越高,切换GPIO高低电平时间越短
    GPIO_Init(GPIO_PORT, &GPIO_InitStructure);
}

int main(void)
{
    Delay_Init();
    gpio_init();
    while(1)
    {
        GPIO_SET;
        Delay_Ms(500);
        GPIO_RESET;
        Delay_Ms(500);
    }
}

会看到LED每隔500ms 闪耀

程序说明

1,程序是按照便于移植使用编写的

用户想使用其它端口可直接在上面修改(列如改为PC13)

0 人点赞