HT32F5232学习之点亮LED

删除回忆录丶 提交于 2020-02-04 20:48:58

因为疫情的原因,今年在家实在是太无聊了,突然想起自己去年报名参加了个合泰杯比赛,本人也是菜鸟一个,之前从未接触过合泰的单片机,刚好手头上有一块HT32F52352的开发板,型号是ESK32-30501U2.1。上一届师兄扔在实验室里,我捡回来的,刚好也就把它带了回家。都说学习一款单片机最开始的是点亮LED,我觉得应该是配置环境还差不多,但由于我本人比较懒,配置环境可以参考这位博主的这篇文章。把需要下载的资料全部下载好,方便以后的学习。还有本文中的工程文件源码。(https://download.csdn.net/download/OldHuangC/12134896)

关于这款单片机的资料在网上少之又少,我在网上找了大量的资料,本着能不自己造轮子绝不自己造轮子的原则,终于完成了隆重的点灯仪式。

点亮板载led
在这里插入图片描述
由原理图可知,控制这两个LED灯的分别是PC14和PC15这两个脚,所以我们只要控制这两个口就能实现led的亮灭了。

LED.H

#ifndef _LED_H
#define _LED_H
 
#include "ht32f5xxxx_01.h"
 
#define LED_GPIO_GROUP             (GPIO_PC)
#define LED1_PIN                   (GPIO_PIN_14)
#define LED2_PIN                   (GPIO_PIN_15)
#define LED_AFIO_MODE              (AFIO_FUN_GPIO)
#define LEDToggle(p,i) 			   {p->DOUTR ^=i;} //输出反转状态,p:HT_GPIOA~D		
void LED_Init(void);

#endif

LED.C

#include "led.h"
 
static void LED_CKCU_Config()  //配置时钟
{
	CKCU_PeripClockConfig_TypeDef CCLOCK = {{0}};//不开启外设时钟相应功能无法使用
	
	CCLOCK.Bit.PC    = 1;//开启PC时钟
	CCLOCK.Bit.AFIO  = 1;//开启复用功能时钟
	CKCU_PeripClockConfig(CCLOCK, ENABLE);//使能时钟
}
 
static void LED_GPIO_Config()  //配置GPIO口,使用ht32f5xxxx_gpio.c里的库函数配置IO功能
{
	HT_GPIO_TypeDef* GPIOgroup; 
	GPIOgroup = HT_GPIOC;  
	
	AFIO_GPxConfig(LED_GPIO_GROUP, LED1_PIN|LED2_PIN, LED_AFIO_MODE); //配置GPIO模式:AFIO_MODE_DEFAULT 默认,AFIO_MODE_1~15模式1~15
    GPIO_DirectionConfig(GPIOgroup,LED1_PIN|LED2_PIN, GPIO_DIR_OUT); //配置GPIO引脚的方向:GPIO_DIR_OUT输出orGPIO_DIR_IN输入                                                                              */
	GPIO_PullResistorConfig(GPIOgroup,LED1_PIN|LED2_PIN, GPIO_PR_DISABLE);//配置指定GPIO引脚的上下拉电阻。GPIO_PR_UP 带内部上拉电阻的引脚GPIO_PR_DOWN 带内部上拉电阻的引脚 GPIO_PR_DISABLE 没有拉电阻的引脚。 
	GPIO_DriveConfig(GPIOgroup,LED1_PIN|LED2_PIN, GPIO_DV_8MA);    //选择指定GPIO引脚的驱动电流,可选GPIO_DV_4/8/12/16MA 

}
 
void LED_Init() //led初始化函数
{
	LED_CKCU_Config();
	LED_GPIO_Config();
}


main.c

#include "ht32.h"
#include "ht32_board.h"
#include "led.h"
#include "delay.h"
int main()
{
		LED_Init();
	while(1){
		
		GPIO_WriteOutBits(HT_GPIOC,LED1_PIN,SET);
				GPIO_WriteOutBits(HT_GPIOC,LED2_PIN,RESET);
		delay_s(1);
		GPIO_WriteOutBits(HT_GPIOC,LED1_PIN,RESET);
				GPIO_WriteOutBits(HT_GPIOC,LED2_PIN,SET);
		delay_s(1);
	}
}


编译之前,记得设置好以下参数
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
最后看下效果。。。

在这里插入图片描述
点灯仪式正式完成,欢迎大家一起交流学习!

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!