【CH32V307】实现LED闪烁,代码解析

一、添加我们创建的文件路径

 二、主函数展示部分

/********************************** (C) COPYRIGHT *******************************
* File Name          : main.c
* Author             : WCH
* Version            : V1.0.0
* Date               : 2021/06/06
* Description        : Main program body.
*********************************************************************************
* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd.
* Attention: This software (modified or not) and binary are used for 
* microcontroller manufactured by Nanjing Qinheng Microelectronics.
*******************************************************************************/

/*
 *@Note
 USART Print debugging routine:
 USART1_Tx(PA9).
 This example demonstrates using USART1(PA9) as a print debug port output.

*/

#include "debug.h"
#include "../My_File/driver.h"  //使用相对路径方法


/* Global typedef */

/* Global define */

/* Global Variable */


/*********************************************************************
 * @fn      main
 *
 * @brief   Main program.
 *
 * @return  none
 */
int main(void)
{
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //中断向量组设置的是2
	SystemCoreClockUpdate();
	Delay_Init();   //系统延时的初始化函数
	USART_Printf_Init(115200);	//串口的初始化
	printf("SystemClk:%d\r\n",SystemCoreClock);
	printf( "ChipID:%08x\r\n", DBGMCU_GetCHIPID() );
	printf("This is printf example\r\n");               //打印这些信息


	Driver_Init();
	while(1)
    {
	    Driver_Loop();
	}
}

这样的话,我们更改就可以不用动单片机它本身的文件,只需更改我们自定义的这些文件,提高了它的可移植性

三、driver函数控制部分 

#include "debug.h"
#include "driver.h"

void Driver_Init()
{
    GPIO_InitTypeDef GPIO_InitStructure = {0};

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE);

    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;    //推挽输出
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

    GPIO_Init(GPIOE, &GPIO_InitStructure);
}

void Driver_Loop()
{
    GPIO_WriteBit(GPIOE, GPIO_Pin_1, !GPIO_ReadOutputDataBit(GPIOE, GPIO_Pin_1));
    Delay_Ms(500);
}

!取反符号

1.定义了一个名为"GPIO_InitStructure"的结构体变量,并将其初始化为0。这个结构体用于配置GPIO引脚的参数。

2.调用了"RCC_APB2PeriphClockCmd()"函数,启用了GPIOE时钟。这是为了确保GPIOE引脚能够正常工作。

3.设置GPIO_InitStructure结构体的参数

"GPIO_Mode"设置为"GPIO_Mode_Out_PP",表示使用推挽输出模式。在这种模式下,引脚可以输出高电平或低电平。

"GPIO_Pin"设置为"GPIO_Pin_1",表示要配置的是GPIOE的第1个引脚。

"GPIO_Speed"设置为"GPIO_Speed_50MHz",表示引脚的输出速度为50MHz。

4.调用了"GPIO_Init()"函数,将配置好的参数应用到GPIOE引脚上。

5.调用了"GPIO_WriteBit()"函数,将GPIOE的第1个引脚的状态设置为其当前状态的相反值。具体来说,如果当前状态是高电平,则将其设置为低电平;如果当前状态是低电平,则将其设置为高电平。

GPIO_ReadOutputDataBit将引脚的高低电平读取出来,然后进行取反再付给初值,这样循环可以产生LED闪烁的效果

6. 调用了"Delay_Ms()"函数,延迟500毫秒,并在每次切换之间延迟500毫秒。

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值