【RISC-V MCU CH32V103测评】点亮第二个LED
[复制链接]
基于CH32V103EVT的GOIP的实验,了解CH32V103这颗芯片的外设使用的是与ARM公司的总线结构AHB总线+APB总线。我猜想外设的编程也应该非常的相似。接下来我就想怎么使用PB1把LED点亮。找来杜邦线把PB1和LED相连接。然后开始了实验。
/* Global Variable */
/*******************************************************************************
* Function Name : GPIO_Toggle_INIT
* Description : Initializes GPIOA.0
* Input : None
* Return : None
*******************************************************************************/
void GPIO_Toggle_INIT(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//打开GPIOB的时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; //设置GPIO的参数
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //设置强输出上拉模式
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; //设置时钟速率
GPIO_Init(GPIOB, &GPIO_InitStructure); //初始化GPIOB端口
}
在实验中,
1、首先要把GPIOB的时钟打开
2、使用结构体:GPIO_InitStructure设置具体的引脚。
3、初始化GPIOB端口。
int main(void)
{
u8 i=0;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
Delay_Init();
USART_Printf_Init(115200);
printf("SystemClk:%d\r\n",SystemCoreClock);
printf("This is printf example\r\n");
GPIO_Toggle_INIT();
while(1)
{
Delay_Ms(250);
GPIO_WriteBit(GPIOA, GPIO_Pin_0, (i==0) ? (i=Bit_SET):(i=Bit_RESET));
GPIO_WriteBit(GPIOB, GPIO_Pin_1, i);
}
}
然后写GPIO引脚,GPIO_WriteBit(GPIOB, GPIO_Pin_1, i);
程序下载后可以看到LED亮了起来。
总体感觉:
这颗芯片的编程和STM32非常的象。学过STM32的朋友应该不会感到有多陌生。
|