当前位置:   article > 正文

HT325232学习笔记(1)——点亮LED_ht32硬件spi

ht32硬件spi

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

1.函数介绍

(1)CKCU_Configuration();

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

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

(2)GPIO_OUT_Configuration();

配置GPIO为输出函数。

  1. void GPIO_OUT_Configuration(void)
  2. {
  3. /*
  4. */
  5. /* Configure LED1, LED2, LED3 pins as output function */
  6. /* Configure AFIO mode of output pins
  7. *这个就是上面提到的AFIO配置函数
  8. *形参1:GPIO_Px,比如你是PC,那就是GPIO_PC
  9. *形参2:AFIO_PIN_n,指定哪一根引脚需要复用,比如是PC14,就传入AFIO_PIN_14,这里注意区别GPIO_PIN_14,这个是其他地方用的
  10. *形参3:AFIO_MODE_n,设定该引脚的复用模式。默认复用(作为GPIO普通管脚)是AFIO_FUN_DEFAULT,其他的只要改后面的单词就行 */
  11. AFIO_GPxConfig(HTCFG_OUTPUT_LED1_ID, HTCFG_OUTPUT_LED1_AFIO_PIN, AFIO_FUN_GPIO);
  12. AFIO_GPxConfig(HTCFG_OUTPUT_LED2_ID, HTCFG_OUTPUT_LED2_AFIO_PIN, AFIO_FUN_GPIO);
  13. /* Configure GPIO direction of output pins
  14. *这是配置GPIO方向的函数
  15. *形参1:HT_GPIOx,比如是PC,那就传入HT_GPIOC
  16. *形参2:GPIO_PIN_nBITMAP,比如是PC14,那就传入GPIO_PIN_14,其他的以此类推
  17. *形参3:GPIO_DIR_INorOUT,用于指定输出方向。
  18. 输入:GPIO_DIR_IN
  19. 输出:GPIO_DIR_OUT */
  20. GPIO_DirectionConfig(HTCFG_LED1, HTCFG_OUTPUT_LED1_GPIO_PIN, GPIO_DIR_OUT);
  21. GPIO_DirectionConfig(HTCFG_LED2, HTCFG_OUTPUT_LED2_GPIO_PIN, GPIO_DIR_OUT);
  22. }

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

  1. int main(void)
  2. {
  3. CKCU_Configuration();
  4. GPIO_OUT_Configuration();
  5. while (1)
  6. {
  7. }
  8. }

2.硬件引脚及宏定义

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

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

  1. /*@file GPIO/InputOutput/ht32_board_config.h*/
  2. #define HTCFG_OUTPUT_LED0_GPIO_PIN (GPIO_PIN_14)
  3. #define HTCFG_OUTPUT_LED1_GPIO_PIN (GPIO_PIN_14)
  4. #define HTCFG_OUTPUT_LED2_GPIO_PIN (GPIO_PIN_15)
  5. #define HTCFG_LED0 (HT_GPIOC)
  6. #define HTCFG_LED1 (HT_GPIOC)
  7. #define HTCFG_LED2 (HT_GPIOC)
  8. #define HTCFG_OUTPUT_LED0_AFIO_PIN (AFIO_PIN_14)
  9. #define HTCFG_OUTPUT_LED1_AFIO_PIN (AFIO_PIN_14)
  10. #define HTCFG_OUTPUT_LED2_AFIO_PIN (AFIO_PIN_15)
  11. #define HTCFG_OUTPUT_LED0_ID (GPIO_PC)
  12. #define HTCFG_OUTPUT_LED1_ID (GPIO_PC)
  13. #define HTCFG_OUTPUT_LED2_ID (GPIO_PC)
  14. #define AFIO_FUN_GPIO AFIO_MODE_1

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/565916
推荐阅读
相关标签
  

闽ICP备14008679号