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