RISC-V MCU CH32V103测评
GPIO 控制
GPIOA B C D 都在 APB2
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
- }
编译配置
效果:
|