[RISC-V MCU 应用开发] 【RISC-V MCU CH32V103测评】 GPIO 控制

[复制链接]
 楼主| 昱枫 发表于 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
  1. /*
  2. * led.c
  3. *
  4. *  Created on: Oct 30, 2020
  5. *      Author: Lenovo
  6. */


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


  12. #include "led.h"



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

  16.     gpioSt.GPIO_Pin = GPIO_Speed;
  17.     gpioSt.GPIO_Mode = GPIO_Mode;
  18.     gpioSt.GPIO_Speed  = GPIO_Speed;

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

  22.     }
  23.     else if(GPIOB == GPIOx)
  24.     {
  25. <font color="#ff0000">  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);</font>
  26.     }
  27.     else if(GPIOC == GPIOx)
  28.     {
  29. <font color="#ff0000">  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);</font>
  30.     }
  31.     else if(GPIOD == GPIOx)
  32.     {
  33. <font color="#ff0000">  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);</font>
  34.     }

  35.     GPIO_Init(GPIOx, &gpioSt);
  36. }


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

  42. void setledOn(void)
  43. {
  44.     CLR_GPIOA(GPIO_Pin_0|GPIO_Pin_1);
  45. }

  46. void clrledOff(void)
  47. {
  48.     SET_GPIOA(GPIO_Pin_0|GPIO_Pin_1);
  49. }

  1. #ifndef HARDWARE_LED_LED_H_
  2. #define HARDWARE_LED_LED_H_


  3. #include "ch32v10x_conf.h"

  4. #define  SET_GPIOA(x)   GPIO_SetBits(GPIOA,x)
  5. #define  CLR_GPIOA(x)   GPIO_ResetBits(GPIOA,x)

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

  7. void ledInit(void);

  8. void setledOn(void);
  9. void clrledOff(void);

  10. #endif /* HARDWARE_LED_LED_H_ */



主函数
  1. int main(void)
  2. {
  3.         u16 i;

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

  7.         ledInit();

  8.         while(1)
  9.         {
  10.  setledOn();
  11.  Delay_Ms(1000);
  12.  clrledOff();
  13.  Delay_Ms(1000);
  14.         }

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

  19.         ADC_RegularChannelConfig(ADC1, ADC_Channel_2, 1, ADC_SampleTime_239Cycles5 );
  20.         ADC_SoftwareStartConvCmd(ADC1, ENABLE);
  21.     Delay_Ms(50);
  22.         ADC_SoftwareStartConvCmd(ADC1, DISABLE);

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

  28.         while(1);
  29. #endif

  30. }




编译配置

2020-10-30_234130.jpg


效果:
2020-10-30_233134.jpg
2020-10-30_233343.jpg
您需要登录后才可以回帖 登录 | 注册

本版积分规则

54

主题

679

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部

54

主题

679

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部