HT325232学习笔记(1)——点亮LED

在用keil5配置完了HT32开发环境之后,点灯工程师开始点灯。

1.函数介绍

(1)CKCU_Configuration();

        这是CKCU的初始化函数。CKCU相当于STM32的RCC时钟管理,用于控制整个芯片的时钟。

void CKCU_Configuration(void)
{
	//CKCU的初始化函数
#if 1
	//定义一个用于初始化CKCU的结构体,后面是赋初值,不用管
  CKCU_PeripClockConfig_TypeDef CKCUClock = {{0}};
	
	//这里对原始语句进行了封装
	/*
	 *原始语句:CKCUClock.Bit.PC=1
	 *结构体内的Bit成员就是用来控制每个模块的时钟开关的
	 *比如我要打开一个BFTM(基本定时器)的能源,那就是CKCUClock.Bit.BFTM0=1,等于1为使能,0为除能
	*/
  HTCFG_OUTPUT_LED1_CLK(CKCUClock) = 1;
  HTCFG_OUTPUT_LED2_CLK(CKCUClock) = 1;
	
	/*
		*AFIO是端口复用时钟,这个正常都要开
		*HT32的端口复用是通过一个AFIO的配置函数来实现的,每个IO都有十多种复用模式
		*具体每种复用模式是干啥的,详见HT32F52342-52_Datasheetv130.pdf的第27页
	*/
  CKCUClock.Bit.AFIO       = 1;
	
	//CKCU配置函数
  CKCU_PeripClockConfig(CKCUClock, ENABLE);
#endif
}

(2)GPIO_OUT_Configuration();

配置GPIO为输出函数。

void GPIO_OUT_Configuration(void)
{
	/*
	
	*/
  /* Configure LED1, LED2, LED3 pins as output function                                                     */
  /* Configure AFIO mode of output pins  
		*这个就是上面提到的AFIO配置函数
		*形参1:GPIO_Px,比如你是PC,那就是GPIO_PC
		*形参2:AFIO_PIN_n,指定哪一根引脚需要复用,比如是PC14,就传入AFIO_PIN_14,这里注意区别GPIO_PIN_14,这个是其他地方用的
		*形参3:AFIO_MODE_n,设定该引脚的复用模式。默认复用(作为GPIO普通管脚)是AFIO_FUN_DEFAULT,其他的只要改后面的单词就行	*/
  AFIO_GPxConfig(HTCFG_OUTPUT_LED1_ID, HTCFG_OUTPUT_LED1_AFIO_PIN, AFIO_FUN_GPIO);
  AFIO_GPxConfig(HTCFG_OUTPUT_LED2_ID, HTCFG_OUTPUT_LED2_AFIO_PIN, AFIO_FUN_GPIO);

  /* Configure GPIO direction of output pins    
		*这是配置GPIO方向的函数
		*形参1:HT_GPIOx,比如是PC,那就传入HT_GPIOC
		*形参2:GPIO_PIN_nBITMAP,比如是PC14,那就传入GPIO_PIN_14,其他的以此类推
		*形参3:GPIO_DIR_INorOUT,用于指定输出方向。
		  输入:GPIO_DIR_IN
			输出:GPIO_DIR_OUT	*/
  GPIO_DirectionConfig(HTCFG_LED1, HTCFG_OUTPUT_LED1_GPIO_PIN, GPIO_DIR_OUT);
  GPIO_DirectionConfig(HTCFG_LED2, HTCFG_OUTPUT_LED2_GPIO_PIN, GPIO_DIR_OUT);
}

到此就可以点亮一个LED了下面放上主函数。

int main(void)
{
	CKCU_Configuration();
	GPIO_OUT_Configuration();
  while (1)
  {    
  }
}

2.硬件引脚及宏定义

原来官方example,有LED0,LED1,LED2,但HT52352只有LED1和LED2,所以这里修改了宏定义。

其中D7即LED1的引脚为PC14,D8即LED2的引脚为PC15。

/*@file    GPIO/InputOutput/ht32_board_config.h*/
  #define HTCFG_OUTPUT_LED0_GPIO_PIN                            (GPIO_PIN_14)
  #define HTCFG_OUTPUT_LED1_GPIO_PIN                            (GPIO_PIN_14)
  #define HTCFG_OUTPUT_LED2_GPIO_PIN                            (GPIO_PIN_15)

  #define HTCFG_LED0                                            (HT_GPIOC)
  #define HTCFG_LED1                                            (HT_GPIOC)
  #define HTCFG_LED2                                            (HT_GPIOC)

  #define HTCFG_OUTPUT_LED0_AFIO_PIN                            (AFIO_PIN_14)
  #define HTCFG_OUTPUT_LED1_AFIO_PIN                            (AFIO_PIN_14)
  #define HTCFG_OUTPUT_LED2_AFIO_PIN                            (AFIO_PIN_15)

  #define HTCFG_OUTPUT_LED0_ID                                  (GPIO_PC)
  #define HTCFG_OUTPUT_LED1_ID                                  (GPIO_PC)
  #define HTCFG_OUTPUT_LED2_ID                                  (GPIO_PC)

  #define AFIO_FUN_GPIO       AFIO_MODE_1   

PS:每次烧入按一下复位键更好,不然有的时候没有现象。

又试了一下,点亮LED没有使用复用功能,不配置复用也能点亮LED,即不用使用AFIO_GPxConfig()。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值