HT32F52352学习笔记之二

(合泰)HT32F52352 主控周边电路设计——PCB设计 作为电路的参考地点,确保电路中各部分的电位参考是一致的。这两个引脚的正确连接对于芯片的正常运行至关重要,因为它们提供了芯片所需的电源和地连接,同时也影响了芯片的稳定性和性能。在你做单片机项目的时候线很多很杂乱,电源要求多,驱动很大,或者要求信号干扰小等等,那么你就要考虑项目PCB的设计了。PCB上的精确布线和固定的布局有助于减少电气噪声和干扰,从而提高整个系统的稳定性和性能。一个良好设计的PCB允许更容易的访问和测量电路中的各个点,这对于调试和维护非常重要。芯片的VDD和VSS是非常重要的电源引脚。 阅读详情

参考之前自己写的STM32的程序中利用按键控制LED亮灭完成了HT32F52352版的按键控制,经过昨天写点亮LED的程序觉得顺手多了。这个程序是在之前的LED(https://blog.youkuaiyun.com/Unlimited_Bit/article/details/86651974)的基础上加入了按键控制,在初始化过程中与STM32不同的是STM32只需选择浮空输入模式即可,而HT32F52352选择输入模式后还需要输入使能这一步,详细见代码。

主要的代码;

(1)按键的初始化

static void KEY_CCKU_Config()
{
	CKCU_PeripClockConfig_TypeDef CCLOCK;
	
	CCLOCK.Bit.PA    = 1;
	CCLOCK.Bit.AFIO  = 1;
	
	CKCU_PeripClockConfig(CCLOCK, ENABLE);
}

static void KEY_GPIO_Config()
{
	HT_GPIO_TypeDef* GPIOx;
	
	GPIOx = HT_GPIOA;
	
	AFIO_GPxConfig(KEY1_GPIO_ID, KEY1_GPIO_PIN, KEY1_AFIO_MODE);
	
	/* 输入使能函数 */
	GPIO_InputConfig(GPIOx, KEY1_GPIO_PIN, ENABLE);
	
	/* Configure the GPIO pin */
//	  GPIO_PullResistorConfig(GPIOx, KEY1_GPIO_PIN, GPIO_PR_DISABLE);
//	  GPIO_DriveConfig(GPIOx, KEY1_GPIO_PIN, GPIO_DV_8MA);
	GPIO_DirectionConfig(GPIOx, KEY1_GPIO_PIN, GPIO_DIR_IN);
	
	
}

void KEY_Init()
{
	KEY_CCKU_Config();
	KEY_GPIO_Config();
}

(2)按键检测函数

u8 KEY_Scan(HT_GPIO_TypeDef* HT_GPIOx, u16 GPIO_PIN_n)
{
	if( GPIO_ReadInBit(HT_GPIOx, GPIO_PIN_n) == RESET )
	{
		while( GPIO_ReadInBit(HT_GPIOx, GPIO_PIN_n) == RESET );
		return ON;
	}
	else 
		return OFF;
}

(3)LED初始化

#include "led.h"

static void LED_CKCU_Config()
{
	CKCU_PeripClockConfig_TypeDef CCLOCK;
	
	CCLOCK.Bit.PC     = 1;
	CCLOCK.Bit .AFIO  = 1;
	
	CKCU_PeripClockConfig(CCLOCK, ENABLE);
}

static void LED_GPIO_Config()
{
	HT_GPIO_TypeDef* GPIOx;
	
	GPIOx = HT_GPIOC;
	
	AFIO_GPxConfig(LED1_GPIO_ID, LED1_GPIO_PIN, LED1_AFIO_MODE);
	
	/* Configure the GPIO pin                                                                                 */
//	  GPIO_PullResistorConfig(GPIOx, LED1_GPIO_PIN, GPIO_PR_DISABLE);
//	  GPIO_DriveConfig(GPIOx, LED1_GPIO_PIN, GPIO_DV_8MA);
	GPIO_DirectionConfig(GPIOx, LED1_GPIO_PIN, GPIO_DIR_OUT);
}

void LED_Init()
{
	LED_CKCU_Config();
	LED_GPIO_Config();
}

(4)main函数

#include "ht32.h"
#include "ht32_board.h"
#include "led.h"
#include "key.h"

int main()
{	
	LED_Init();
	KEY_Init();
	
	while(1)
	{
		if( KEY_Scan(HT_GPIOA, KEY1_GPIO_PIN) == ON )
		{
			LEDToggle(HT_GPIOC, GPIO_PIN_14);
		}
	}
}

对硬件方面(如引脚、模式选择等的封装)

#ifndef _KEY_H
#define _KEY_H

#include "ht32f5xxxx_01.h"

#define KEY1_GPIO_ID                (GPIO_PA)
#define KEY1_GPIO_PIN               (GPIO_PIN_4)
#define KEY1_AFIO_MODE              (AFIO_FUN_GPIO)
 
#define KEY2_GPIO_ID                (GPIO_PA)
#define KEY2_GPIO_PIN               (GPIO_PIN_1)
#define KEY2_AFIO_MODE              (AFIO_FUN_GPIO)
 
#define KEY3_GPIO_ID                (GPIO_PA)
#define KEY3_GPIO_PIN               (GPIO_PIN_2)
#define KEY3_AFIO_MODE              (AFIO_FUN_GPIO)

#define ON	                    (1)
#define OFF	                    (0)

#define LEDToggle(p,i) 		    ({p->DOUTR ^=i;})

void KEY_Init(void);
u8 KEY_Scan(HT_GPIO_TypeDef* HT_GPIOx, u16 GPIO_PIN_n);

#endif
#ifndef _LED_H
#define _LED_H

#include "ht32f5xxxx_01.h"

#define LED1_GPIO_ID                (GPIO_PC)
#define LED1_GPIO_PIN               (GPIO_PIN_14)
#define LED1_AFIO_MODE              (AFIO_FUN_GPIO)

#define LED2_GPIO_ID                (GPIO_PC)
#define LED2_GPIO_PIN               (GPIO_PIN_15)
#define LED2_AFIO_MODE              (AFIO_FUN_GPIO)

#define LED3_GPIO_ID                (GPIO_PC)
#define LED3_GPIO_PIN               (GPIO_PIN_1)
#define LED3_AFIO_MODE              (AFIO_FUN_GPIO)		

#define LEDToggle(p,i) 				{p->DOUTR ^=i;} //输出反转状态,p:HT_GPIOA~D		

void LED_Init(void);

#endif

对用到的库函数的摘录

(1)输入使能函数

/*********************************************************************************************************//**
 * @brief Enable or Disable the input control of specified GPIO pins.
 * @param HT_GPIOx: where HT_GPIOx is the selected GPIO from the GPIO peripherals.
 * @param GPIO_PIN_nBITMAP: The port pins.
 *   This parameter can be any combination of GPIO_PIN_x.
 * @param Cmd: This parameter can be ENABLE or DISABLE.
 * @retval None
 ************************************************************************************************************/
void GPIO_InputConfig(HT_GPIO_TypeDef* HT_GPIOx, u16 GPIO_PIN_nBITMAP, ControlStatus Cmd)

(2)获取指定引脚数据函数

/*********************************************************************************************************//**
 * @brief Get the input data of specified port pin.
 * @param HT_GPIOx: where HT_GPIOx is the selected GPIO from the GPIO peripherals.
 * @param GPIO_PIN_n: This parameter can be GPIO_PIN_x.
 * @retval SET or RESET
 ************************************************************************************************************/
FlagStatus GPIO_ReadInBit(HT_GPIO_TypeDef* HT_GPIOx, u16 GPIO_PIN_n)

特别说明下:关于设置引脚驱动电流及电阻的库函数也可以不调用(所以我就把它们注释了),这时相关的数值都为默认值。配置电流由PxDRVR寄存器实现。但是引脚复用初始化函数一定要调用。

配置电阻由PxPUR、PxPDR寄存器实现。

 

 

合泰HT32F52342/HT32F52352芯片Pack下载和工程例程下载 合泰Pack下载 #合泰HT32F52342/HT32F52352芯片Pack下载和工程例程下载 Pack 下载主要有两种方法: 第一、Keil 5(MDK 5)包管理器下载 打开Keil MDK 5,点击如下图所示的按钮,在弹出的窗口下选择合泰的pack,点击Install即可。 第二、到官网去下载这些包,但有人可能会发现打开官网https://www.keil.com/dd2/pack/,时并没有显示列表,因此可以安装一个插件:https://chrome.google.com/webstore/de 阅读详情

相关推荐

合泰HT32F52352串口通信学习笔记

HT32F52352芯片资料 作为一个开发者,学会找 / 看芯片资料很重要!找资料最好的方法就是直接在官网找。 比如想找ht32f52352芯片的资料可以直接在合泰的官网下载。https://www.holtek.com.cn/productdetail/-/vg/HT32F52342-52 这里直接给出以下两份资料的下载地址 HT32F52342/HT32F52352开发使用手册 链接:https://leoeinstein.lanzous.com/iIhXgka7jkb 开发使用手册里面具体介绍了芯片的

LiangWF22的博客 1万+

合泰HT32F52352 RT-Thread操作系统移植

基于M0架构下的合泰HT32F52352 RT-Thread操作系统移植

xiaoruiuri的博客 2184

HT32F52352新建库函数工程模板、点亮第一个LED

HT32F52353单片机新建工程并根据库函数点亮LED

不善挽留 6119

【合泰HT32F52352GPTM多路PWM控制】

合泰HT32F52352(GPTM)多路PWM控制 关于合泰HT32F52352多路pwm的控制,困了几天,今天终于得到解决,不得不说合泰的相关资料太少了,并且很多博主分享的可能和我们的芯片型号不同差别还是有点大的,ht32f52352的使用倒和stm32形式上很像,所以在学习过程中,对于一些外设的控制我们同样可以借鉴一下stm32的使用规则,然后进行相关的修改。下面会以PWM产生和捕捉定时器(GPTM) 控制四路舵机进行分享,希望可以帮助到正在学习HT32的小伙伴们。 其他博主的分享 实验效果 话规正

boybs的博客 7029

HT32F52352初学点亮LED

本人从STM32单片机过渡到合泰单片机,是一个小白,在32单片机学习也不够透彻,想通过此次学习写下自己的一些见解,关于有关合泰单片机的相关参考资料下载和软件安装和使用可参考这位博主HT32F52352单片机学习笔记(一) 接下来如何点亮LED呢? 一、参照资料 1、将固件包下载好 里面有对GPIO和AFIO的配置函数 由于我们是要点亮LED1和LED2,所以要对其引脚进行配置,而配置引脚之前...

weixin_46119785的博客 3201

HT32F52352微控制器串口通信项目实践指南

HT32F52352微控制器基于Cortex-M4核心,具备浮点单元(FPU),其工作频率高达200 MHz。该芯片集成了丰富的外设接口,提供了灵活的通信和控制能力,适用于工业控制、智能仪表、医疗设备等高性能应用。Cortex-M4核心提供了一套完整的DSP指令集和单周期乘法累加(MAC)操作,对于信号处理及算法密集型应用提供了强大的支持。其性能特点主要包括:- 高性能:通过高速缓存和优化的哈佛结构,实现了快速的数据处理和执行效率。

weixin_36204513的博客 1195

HT32F52352学习笔记之五

经过一小段时间的奋战,终于是把串口通信的相关代码编写并调试完成了。可以实现接收中断、发送数据、经过重定向的printf、puts、getchar、scanf都可以通过串口的方式实现输出输入。另外,由于使用的是HT32F52352的最小系统板,在发送数据时可不外接CH340模块,但是要实现接收数据一定一定要外接CH340模块,我也不知道为什么会这样,真的服了,被这个不需要外接CH340模块就能发送数...

Unlimited_Bit的博客 7364

HT32F52352基本功能通用函数库

LED KEY SYS 延时 PWM 串口 位数读取,解读

HT32F52352学习笔记之六

花了好多的时间算是把软件I2C协议的代码写出来了。然后进阶,把HT32F5232利用I2C读写AT24C02的程序写出来了。这个过程中很坑的地方就是数据线SDA要一直在输入和输出这里切换,因为这个HT32输入时需要输入使能,就很麻烦。鉴于I2C之前有学过,这里就不贴出来关于I2C的详细解释了。另外在调试时有用到串口,详见学习笔记之五https://blog.youkuaiyun.com/Unlimited_B...

Unlimited_Bit的博客 6435

HT32F52352 HT32F52342c产品规格书

HT32F52342 HT32F52352产品规格书 带 Arm Cortex-M0+ 内核以及1 MSPS ADC、 USART、 UART、 SPI、 I2C、 I2S、 MCTM、 GPTM、BFTM、 SCI、 CRC、 RTC、 WDT、 PDMA、 EBI 和 USB 2.0 FS高达 128KB Flash 和 16KB SRAM 的 Holtek 32-Bit 单片机

STM32+OV7670实战:5步搞定低成本人脸识别门禁系统(附完整代码)

本文详细介绍了基于STM32单片机和OV7670摄像头构建低成本离线人脸识别门禁系统的完整实战方案。文章从硬件选型、电路设计避坑入手,逐步讲解了图像采集优化、轻量级人脸检测与LBP特征提取策略,并提供了离线人脸库管理、特征比对以及系统集成的具体实现方法,附有核心代码示例,旨在帮助开发者快速实现可落地的嵌入式视觉应用。

kubernetes8ctl的博客 568

HT32F52352学习笔记之三

接着学习F52352芯片。这次写的是触发外部中断控制LED亮灭的程序。这个外部中断有15个中断号,即EXTI0-15,还是很多的。初始化过程中需要配置EXTI 来源选择寄存器 0 – ESSR0或是EXTI 来源选择寄存器 1– ESSR1选择中断来源。这个是一一对应的关系,比如选着了GPIOA的引脚4,那么就同时选择了EXTI4中断,同时中断服务函数也是要写EXTI4。相关引脚也需要复用模式才能...

Unlimited_Bit的博客 7336

【Android】汽车电源管理:深入解析CarPowerManager与Suspend To RAM的交互机制

本文深入解析了Android Automotive OS中CarPowerManager与Suspend To RAM(深度睡眠)的交互机制。详细阐述了从车辆发出睡眠请求,到CarPowerManagementService协调应用状态,最终通过内核进入低功耗睡眠的完整流程,并探讨了唤醒机制、开发者实践及功耗优化策略,为车机应用开发与系统优化提供关键指导。

weixin_28339967的博客 290

HT32F52352学习笔记之一

第一次尝试点亮一个LED,花了不少时间在找官网资料,终于算是完成了点亮LED这个大项目了。 用的是最小系统板上附带的LED,最小系统板型号是ESK32-30501v2.0。 主要的代码: #include "led.h" static void LED_CKCU_Config() { CKCU_PeripClockConfig_TypeDef CCLOCK; CCLOCK.Bit...

Unlimited_Bit的博客 8108

手把手教你用RSoft BPM仿真一个1x2光分束器:从参数设置到结果分析全记录

本文详细介绍了使用RSoft BPM模块设计和仿真1×2光分束器的完整流程,包括参数设置、结构建模、仿真配置和结果分析。通过实战指南,帮助读者掌握光波导器件的仿真技术,实现50:50功率分配的设计目标,适用于光通信和集成光学领域的研究与应用。

weixin_30545945的博客 545

香橙派5b 移植 imx415

修改设备树,以为例,关闭ov13855,添加imx4151;0;1;0;1;0;1;0;1;0;1;0;1;0;以此类推,修改三个dtsi。

ChenYX的博客 4535

合泰HT32F52352入门教程(# 1W+字 博客帮您快速上手,拿奖不是梦 #)

这篇文章的代码均经过本人烧写验证,1W字文章帮你快速上手HT32F52352

想要亿只独角兽的博客 1万+

ITK-snap进行分割区域标注、三维显示及改变显示颜色

在进行医学图像器官分割时,无论我们是用传统方法还是深度学习,最后肯定要用到手动分割的区域作为金标准来验证我们方法的精度。但是手动标注器官的轮廓是十分耗时的,这里我介绍一个比较简单的标注方法,以肺分割作为例子。 我们使用ITK-snap作为分割标注工具。 当切片间距离比较小时,比如1mm,一个患者的完整HRCT序列通常在200张以上,如果让医生一一进行分割区域标注是非常耗时乏味的。因此,我们可以使用最简单的阈值法比如OSTU,加上基本的形态学操作对肺进行粗分割得到粗略的分割掩码,在此基础上再手动的对分割结果进

u010409517的博客 2万+

【基于合泰HT32F52352的智慧垃圾桶总结】

基于HT32F52352的智慧垃圾桶

boybs的博客 4423

【雷达】一维和二维自适应波束形成(DBF))DBF附matlab代码

1 简介 数字波束形成技术是天线波束形成原理与数字信号处理技术相结合的产物,其广泛应用于阵列信号处理领域.由于电磁工作环境的恶化和大量射频干扰的存在,在极低的信干噪比(SINR)条件下进行目标检测和信息提取十分困难.对于阵列系统,往往采用自适应数字波束形成(ADBF)技术,来抑制强干扰和方向性干扰对有用信号的影响.介绍了数字波束形成器的基本原理及其DSP的实现结构.​ 2 完整代码 clc;clear all;close all;%%%%%%%%%%%%%%%%%一维DBF%%%%%%%%%%%%%

qq_59747472的博客 7266

YOLO系列算法改进 | Neck改进篇 | 融合FAAFusion傅里叶角度对齐模块 | 攻克多尺度方向特征冲突,角度检测精度飙升! | CVPR 2026

YOLO系列算法改进 | Neck改进篇 | 融合FAAFusion傅里叶角度对齐模块 | 攻克多尺度方向特征冲突,角度检测精度飙升! | CVPR 2026 (以YOLO26最新目标检测模型为基础,利用FAAFusion傅里叶角度对齐模块改进Neck部分)

2502_91881744的博客 315

“合泰杯”——HT32F52352+DHT11笔记

“本文章用于记录参加合泰单片机过程关于DHT11温湿度传感器的一些制作过程与踩得一些坑。” 文章目录 前言 一、引脚说明 二、通信过程 三、产品参数 四、注意事项 五、DHT11驱动程序 前言 “此文章多数转载这个大神——玩转硬件的文章,并结合DHT11的数据手册进行记录(50条消息) 玩转传感器——DHT11温湿度传感器(STM32版)_JOU_XQS的博客-优快云博客_dht11温湿度传感器” DHT11数字温湿度传感器是一款含有已校准数字信号输...

weixin_52780369的博客 5564

芒果YOLOv1改进35:主干Backbone篇之MobileViTv3:全网首发最新 MobileViTv3 系列最强改进版本(三)|轻量化Transformer视觉转换器,简单有效地融合了本地全局

芒果YOLOv1改进35:主干Backbone篇之MobileViTv3:全网首发最新 MobileViTv3 系列最强改进版本(三)|轻量化Transformer视觉转换器,简单有效地融合了本地全局

包括YOLOv5、YOLOv7、YOLOv8等模型改进 417

合泰32位单片机入门/以HT32F52352为例

合泰32位单片机入门/以HT32F52352为例 Hi!很高兴看到你。以前经常在优快云上查找资料,经常能找到想要的,因此也希望在此分享自己的学习心得与收获。32位的单片机其实都差不多,很多内核都是ARM系列,只是不同公司用的外设有些不一样,包括一些端口、库函数。之前有接触过STM32,但是不够深入,本文以HT32F52352为例,说明如果开始一个工程的简单配置。希望能帮助到一些初学者,如有错误请...

c位出道 8309

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

OpenOCD添加第三方设备支持:HT32F52352 Cortex-M0+

第一次为OpenOCD添加新的设备支持

weixin_41328027的博客 1万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

HT32F52352 串口通信

最后,使用USART_TxCmd和USART_RxCmd函数使能USART的发送和接收功能,并使用USART_IntConfig函数使能USART的中断。然后,在主循环中,我们使用USART_ReceiveData函数从USART接口中读取一个字节的数据,并将其存储在ss中。在该函数中,使用USART_SendData函数发送数据,并使用USART_GetFlagStatus函数检查USART是否准备好发送下一个字节的数据。在该函数中,使用Usart_Sendbyte函数发送每个字节的数据。

yandadzf的博客 2303

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

上一篇: HT32F52352学习笔记之一
下一篇: HT32F52352学习笔记之三
R/W
R/W
博客等级 码龄8年 93粉丝 21原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值