HT32基本外设使用

1. LEDBlink

HT32的点灯函数,自行跟HAL库对应
GPIO_WriteOutBits(HT_GPIOC,GPIO_PIN_14,RESET);

2. USART

2.1 重定向

HT32init生成的工程文件中,是有重定向这个文件的,所以我们只需要引用其中的接口函数即可
RETARGET_Configuration();//重定向初始化
PS: 注意如果重定向失败的话也许是串口的宏定义不对应
在这里插入图片描述
因为最小系统板上的串口跟elink32连接的是串口1,所以这里的要选择COM1,但是不知道为什么我初始化了串口1之后还是给我默认是COM0
在这里插入图片描述
在这里插入图片描述
我们找到它的定义可以看到是10,而COM0是13
在这里插入图片描述
或者在初始化的时候勾选这个选项即可
(2022/3/23编辑)

在初始化工程的时候,最好不勾选作为重定向端口了,因为这样他会帮你写好串口中断的函数,并且开启中断,我们只需要像上面说的一样去修改com的值也可也作为重定向端口可以用printf
在这里插入图片描述
(编辑结束)

(2022年3月31日编辑)
需要注意的是,HT官方给的那块HTF52352的板子的排针上的A5是空的过孔,我们看他的原理图会发现都没有这个网络在那,所以使用A4和A5作为USART1的引脚时,记得链接板子中间那个跳线帽的A5才是有效的。
(编辑结束)

3. Delay

3.1 delay.h

#ifndef __DELAY_H
#define __DELAY_H 			   
#include "ht32_cm0plus_misc.h"
void delay_s(u16 s);
void delay_ms(u16 ms);
void delay_us(u32 us);
#endif

3.2 delay.c

#include "delay.h"
//mS微秒级延时程序
void delay_us(u32 us)
{
	u32 i;
	SYSTICK_ClockSourceConfig(SYSTICK_SRC_STCLK);          //选择外部参考时钟作为SysTick时钟源。8MHZ
	SYSTICK_SetReloadValue(SystemCoreClock / 8 / 1000000); // 重装计数初值
	SYSTICK_IntConfig(DISABLE);                            // 是否开启中断
	SYSTICK_CounterCmd(SYSTICK_COUNTER_CLEAR);             //清空定时器
	SYSTICK_CounterCmd(SYSTICK_COUNTER_ENABLE);            //使能
	for( i = 0;i < us;i++ )
	{
		while( !( (SysTick->CTRL) & (1<<16) ) ); 
	}
 
	SYSTICK_CounterCmd(SYSTICK_COUNTER_DISABLE); //关闭
	SYSTICK_CounterCmd(SYSTICK_COUNTER_CLEAR);	 //复位清零
}

void delay_ms(u16 ms){ //mS毫秒级延时程序 	  
	while( ms-- != 0){
		delay_us(1000);	//调用1000微秒的延时
	}
}
 
void delay_s(u16 s){ //S秒级延时程序	 		  	  
	while( s-- != 0){
		delay_ms(1000);	//调用1000毫秒的延时
	}
} 

3.3 参考资料

HT32F5232学习之利用dealy延时函数实现呼吸灯效果

4. SPI

4.1 库函数和HAL库对应

  • SPI发送接收数据
    u16 SPI1_MASTER_SendByte(u8 byte)//HT32
    HAL_StatusTypeDef HAL_SPI_TransmitReceive(SPI_HandleTypeDef *hspi, uint8_t *pTxData, uint8_t *pRxData, uint16_t Size,uint32_t Timeout)//STM32

5. TIM

5.1 Interrupt

5.1.1 HT32init配置

在这里插入图片描述

5.1.2 接口函数

在这里插入图片描述
在对应的中断函数中编写业务代码即可
中断的开启NVIC_EnableIRQ(GPTM0_IRQn); // interrupt enable

### 关于HT32F52352单片机HT32Init函数的使用 针对HT32F52352单片机,在初始化过程中,`HT32Init`函数起到至关重要的作用。此函数通常被设计用于执行一系列必要的硬件和外设初始化设置,确保单片机能正常运行并准备就绪以响应后续的应用逻辑需求[^1]。 #### 初始化过程概述 在具体应用中,`HT32Init`可能涉及如下几个方面的工作: - **系统时钟配置**:调整内部振荡器频率至所需水平,以便支持更精确的时间测量和其他依赖时间的操作。 - **GPIO端口设定**:指定各引脚的功能(如输入/输出),以及它们默认状态(高电平或低电平)。这一步骤对于连接外部设备至关重要,例如红外模块作为输入源的情况[^3]。 - **UART通信接口启动**:如果项目涉及到串行通讯,则需在此阶段激活相应的UART通道,并对其进行参数化配置,比如波特率、停止位数等。这对于实现双串口功能特别重要[^2]。 - **PWM信号发生器预置**:若有需要生成周期性的脉宽调制波形的任务,那么也应当在这里完成相关定时器及其关联寄存器的初始赋值工作。 为了更好地理解如何编写有效的`HT32Init`函数,下面给出一段简化版的例子代码供参考: ```c void HT32Init(void){ /* System Clock Configuration */ CKCU_DeInit(); CKCU_PeripClockConfig(CKCU_PERIPH_GPIO, ENABLE); /* GPIO Initialization */ GPIO_Configuration(); // 假定这是一个自定义函数 /* UART Initialization */ USART_Configuration(); // 同样假定这是另一个负责配置USART的具体实现 /* PWM Setup */ TIM_PWM_Configuration(); // 这里同样假设有一个专门处理TIM/PWM设置的方法 /* Additional Peripherals Init Code Here ... */ } ``` 上述代码片段展示了基本框架下的初始化流程;实际开发时应根据具体的硬件资源分配情况和个人项目的特殊要求做适当调整。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值