[RISC-V MCU 应用开发]

【RISC-V MCU CH32V103测评】 GPIO 控制

[复制链接]
457|0
手机看帖
扫描二维码
随时随地手机跟帖
昱枫|  楼主 | 2020-10-30 23:44 | 显示全部楼层 |阅读模式

RISC-V MCU CH32V103测评

GPIO 控制

GPIOA  B  C D 都在 APB2
2020-10-30_233752.jpg


1.建立LED文件
 以及led.c led.h
/*
* led.c
*
*  Created on: Oct 30, 2020
*      Author: Lenovo
*/


/*  AHB  -  APB2   MAX 80MHz
*
    GPIOA  /  GPIOB   /  GPIOC  /  GPIOD    / TIM1  /  SPI1  /  USART1 / [ TouchKey /  ADC  ]
  PA0-PA15   PB0-PB15  PC0-PA15   PD0-PD15                              [  AIN0 -  AIN15  AIN16 TempSensor AIN17 Vref
*/


#include "led.h"



void gpioInit(GPIO_TypeDef* GPIOx,uint16_t GPIO_Pin,GPIOSpeed_TypeDef GPIO_Speed,GPIOMode_TypeDef GPIO_Mode)
{
    GPIO_InitTypeDef  gpioSt;

    gpioSt.GPIO_Pin = GPIO_Speed;
    gpioSt.GPIO_Mode = GPIO_Mode;
    gpioSt.GPIO_Speed  = GPIO_Speed;

    if(GPIOA == GPIOx)
    {
<font color="#ff0000">  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);</font>

    }
    else if(GPIOB == GPIOx)
    {
<font color="#ff0000">  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);</font>
    }
    else if(GPIOC == GPIOx)
    {
<font color="#ff0000">  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);</font>
    }
    else if(GPIOD == GPIOx)
    {
<font color="#ff0000">  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);</font>
    }

    GPIO_Init(GPIOx, &gpioSt);
}


void ledInit(void)
{
    gpioInit(GPIOA,GPIO_Pin_0|GPIO_Pin_1,GPIO_Speed_50MHz,GPIO_Speed_50MHz);
    GPIO_SetBits(GPIOA,GPIO_Pin_0|GPIO_Pin_1);                     //设置引脚输出高电平
}

void setledOn(void)
{
    CLR_GPIOA(GPIO_Pin_0|GPIO_Pin_1);
}

void clrledOff(void)
{
    SET_GPIOA(GPIO_Pin_0|GPIO_Pin_1);
}

#ifndef HARDWARE_LED_LED_H_
#define HARDWARE_LED_LED_H_


#include "ch32v10x_conf.h"

#define  SET_GPIOA(x)   GPIO_SetBits(GPIOA,x)
#define  CLR_GPIOA(x)   GPIO_ResetBits(GPIOA,x)

void gpioInit(GPIO_TypeDef* GPIOx,uint16_t GPIO_Pin,GPIOSpeed_TypeDef GPIO_Speed,GPIOMode_TypeDef GPIO_Mode);

void ledInit(void);

void setledOn(void);
void clrledOff(void);

#endif /* HARDWARE_LED_LED_H_ */



主函数
int main(void)
{
        u16 i;

        Delay_Init();
        USART_Printf_Init(115200);
        printf("SystemClk:%d\r\n",SystemCoreClock);

        ledInit();

        while(1)
        {
 setledOn();
 Delay_Ms(1000);
 clrledOff();
 Delay_Ms(1000);
        }

#if 0
    ADC_Function_Init();
        DMA_Tx_Init( DMA1_Channel1, (u32)&ADC1->RDATAR, (u32)TxBuf, 1024 );
        DMA_Cmd( DMA1_Channel1, ENABLE );

        ADC_RegularChannelConfig(ADC1, ADC_Channel_2, 1, ADC_SampleTime_239Cycles5 );
        ADC_SoftwareStartConvCmd(ADC1, ENABLE);
    Delay_Ms(50);
        ADC_SoftwareStartConvCmd(ADC1, DISABLE);

        for(i=0; i<1024; i++)
        {
                printf( "%04d\r\n", TxBuf[i] );
                Delay_Ms(10);
        }

        while(1);
#endif

}




编译配置

2020-10-30_234130.jpg


效果:
2020-10-30_233134.jpg
2020-10-30_233343.jpg

使用特权

评论回复

相关帖子

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

本版积分规则

53

主题

674

帖子

4

粉丝