HT32F52352初学点亮LED

本人从STM32单片机过渡到合泰单片机,是一个小白,在32单片机学习也不够透彻,想通过此次学习写下自己的一些见解,关于有关合泰单片机的相关参考资料下载和软件安装和使用可参考这位博主HT32F52352单片机学习笔记(一)
接下来如何点亮LED呢?

一、参照资料

1、将固件包下载好

HT32F52352初学点亮LED_第1张图片
HT32F52352初学点亮LED_第2张图片
HT32F52352初学点亮LED_第3张图片HT32F52352初学点亮LED_第4张图片
里面有对GPIO和AFIO的配置函数
由于我们是要点亮LED1和LED2,所以要对其引脚进行配置,而配置引脚之前,要先使能外设时钟

引脚图

关于所对应的引脚可以从下载好的原理图查到,HT32F52352初学点亮LED_第5张图片

二、程序及其原理

点亮LED灯实际上是对GPIO和AFIO的配置,一般步骤为:
1、启用AFIO外设时钟
2、、配置WAKEUP,KEY1,KEY2引脚作为输入函数
(1)启用输入管脚的GPIO外设时钟
(2)配置输入管脚的AFIO模式
(3)配置输入引脚的GPIO方向
3、配置LED1,LED2,LED3引脚作为输出功能
(1)启用输出管脚的GPIO外设时钟
(2)配置输出引脚的AFIO模式
(3)配置输出引脚的GPIO方向
4、无限循环从输入引脚读取数据,然后输出到LED
(1)读取唤醒,然后通过LED1输出
(2)读取KEY1,然后通过LED2输出
(3)读取KEY2,然后通过LED2输出
我们只需要启用外设时钟、配置输出功能和读取其数据便可实现点亮LED功能

led.c

#include 

void led_init(void)
{
	 CKCU_PeripClockConfig_TypeDef LEDClock = {{ 0 }};  //不开启外设时钟相应功能无法使用
     LEDClock.Bit.PC = 1;      //开启PC时钟
     LEDClock.Bit.AFIO = 1;    //开启复用功能时钟
	 CKCU_PeripClockConfig(LEDClock, ENABLE);    //使能时钟
	 GPIO_DirectionConfig(HT_GPIOC, GPIO_PIN_14,   GPIO_DIR_OUT);      //配置GPIO口
     GPIO_DirectionConfig(HT_GPIOC, GPIO_PIN_15, GPIO_DIR_OUT);
}

led.h

//#ifndef __LED_H_
//#define __LED_H_

//#include "ht32f5xxxx_ckcu.h"
//#include "ht32f5xxxx_gpio.h"

//void led_init(void);

//#endif

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_ms(1000);
	
		GPIO_WriteOutBits(HT_GPIOC,LED1_PIN,RESET);
		GPIO_WriteOutBits(HT_GPIOC,LED2_PIN,SET);
		delay_ms(1000);
	}
}

以上代码可以实现跑马灯的效果
希望能对你有所帮助(ง •̀_•́)ง

你可能感兴趣的:(单片机,stm32)