本帖最后由 changweilin 于 2024-2-18 20:56 编辑
HC32F4A0开发板开箱、搭建开发环境及点亮LED灯
1开发板简介
1.1主控芯片
XHSCEV_F4A0_LQ176_Rev1.0开发板搭载小华半导体公司的HC32F4A0SITB-LQFP176芯片,该芯片为Cortex-M4架构,集成FPU、MPU,支持SIMD指令的DSP ,最高工作主频 240MHz ,达到 300DMIPS或825Coremarks的运算性能,支持宽电压范围(1.8-3.6v),器件等级为工业级(工作温度-40℃~105℃),片内包含2MB的Flash和516KB的SRAM,6个独立时钟源,16个高性能模拟外设,多路定时器,142GPIO,最多32个通信接口,是HC32F4系列性能最高外设最丰富的芯片。
1.2开发板外设
该开发板外设资源及其丰富,其硬件系统如图1所示:
图1 开发板外设框图
开发板可以通过Micro-USB接口或者5v电源适配器接口供电,使用船型开关来控制电源适配器的通断,可以使用SWD、JTAG、TRACE以及板载DAP进行调试和下载程序;该开发板有20PIN的JTAG口,当使用JTAG口进行调试时,JTAG口的电源会给整个开发板进行供电,此时关闭船型开关整个开发板依然会处于工作状态,因此为方便调试要在KEIL5中勾选Reset AND Run如图2所示,烧录程序后会直接运行。
图2 Keil5调试设置
1.3实物开箱
开发板正反面实物如图3、图4所示,因搭载外设种类较多,整体尺寸较大为200mm×150mm,开发板采用白色丝印、蓝色阻焊剂,主要元器件都位于开发板正面,整体焊接平整,切口处无毛刺且丝印清晰。
图3 开发板正面
图4 开发板背面
2开发环境搭建
2.1开发环境选择
根据文档《UM_小华半导体MCU开发环境使用_Rev1.1.pdf》及小华半导体官网相关资料,小华MCU可选择IAR Workbench、Keil uVision5 MDK和XHCode进行开发,根据个人开发习惯选择开发环境,下面我会使用Keil5 MDK来搭建开发环境和工程模板;值得一提的是小华官方提供了图形化编程工具XHCode如图5所示,可以快速查看各种型号芯片的所有外设并进行快速配置。
图5 XHCode界面
2.2开发环境搭建
2.2.1相关资料下载
2.2.2创建工程模板
下载并安装HC32F4AO系列的支持包,选择对应型号的芯片如图6所示,根据个人开发习惯搭建工程模板如图7所示。
图6 选择芯片型号
图7 个人工程模板结构
3点亮LED灯
3.1原理图分析
查阅开发板电路图可知该开发板没有独立控制LED灯的引脚,经过对原理图(图8)的分析发现TPS2051BD的EN脚可以控制OUT脚的高低电平进而控制MMBT5551三极管的通断,当三极管导通时LED灯点亮、断开时LED灯熄灭,LED10和LED11可以通过PB11和PC9的高低电平来控制亮灭。
图8 LED相关原理图
3.2点亮LED灯代码
LED灯控制函数:
#include "main.h"
#define LED11_PORT (GPIO_PORT_C)
#define LED11_PIN (GPIO_PIN_09)
#define LED10_PORT (GPIO_PORT_B)
#define LED10_PIN (GPIO_PIN_11)
void LED_Init(void)
{
stc_gpio_init_t stcGpioInit;
stcGpioInit.u16PinState = PIN_STAT_RST;//初始化电平状态
stcGpioInit.u16PinDir = PIN_DIR_OUT; //配置输入or输出
stcGpioInit.u16PinOutputType = PIN_OUT_TYPE_CMOS; //推挽输出
stcGpioInit.u16PinDrv = PIN_HIGH_DRV; //驱动能力
stcGpioInit.u16Latch = PIN_LATCH_OFF; //输出锁存关闭
stcGpioInit.u16PullUp = PIN_PU_ON; //内部上拉
stcGpioInit.u16Invert = PIN_INVT_OFF; //关闭内部反向
stcGpioInit.u16ExtInt = PIN_EXTINT_OFF; //关闭中断
//stcGpioInit.u16PinInputType = PIN_IN_TYPE_SMT; //开启输入施密特触发器
stcGpioInit.u16PinAttr = PIN_ATTR_DIGITAL; //引脚为模拟状态
LL_PERIPH_WE( LL_PERIPH_GPIO ); //gpio寄存器解保护
GPIO_Init( LED11_PORT, LED11_PIN, &stcGpioInit );
GPIO_Init( LED10_PORT, LED10_PIN, &stcGpioInit );
LL_PERIPH_WP( LL_PERIPH_GPIO ); //gpio寄存器保护
}
void LED10_ON(void)//LED10点亮
{
GPIO_SetPins(LED10_PORT,LED10_PIN);
}
void LED10_OFF(void)//LED10熄灭
{
GPIO_ResetPins(LED10_PORT,LED10_PIN);
}
void LED11_ON(void)//LED11点亮
{
GPIO_SetPins(LED11_PORT,LED11_PIN);
}
void LED11_OFF(void)//LED11熄灭
{
GPIO_ResetPins(LED11_PORT,LED11_PIN);
}
主函数:
#include "main.h"
int32_t main( void )
{
LL_PERIPH_WE( LL_PERIPH_ALL );//寄存器解保护
BSP_CLK_Init();//配置系统时钟
LL_PERIPH_WP( LL_PERIPH_ALL );//寄存器保护
LED_Init();//初始化GPIO和LED灯
delay_init( 240 );//根据系统时钟频率配置延时基准
while( 1 )
{
LED10_ON();//点亮LED10
LED11_OFF();//关闭LED11
delay_ms(500);//延时500MS
LED10_OFF();//关闭LED10
LED11_ON();//点亮LED11
delay_ms(500);//延时500MS
}
}
3.3实验现象
如视频所示
4点亮三色LED灯
4.1三色LED灯原理图分析
开发板上有红、黄、蓝三色LED灯各一个(图9),通过TCA9539的P15、P16和P17进行控制,因此可通过I2C接口控制TCA9539进而控制开发板上的三色LED灯的亮灭(图10)。
图9 三色LED灯原理图
图10 TCA9539控制芯片
4.2点亮三色LED灯代码
#include "main.h"
int32_t main( void )
{
LL_PERIPH_WE( LL_PERIPH_ALL );//寄存器解保护
BSP_CLK_Init();//配置系统时钟
BSP_IO_Init();//初始化TCA9539
BSP_LED_Init();//初始化LED灯
LL_PERIPH_WP( LL_PERIPH_ALL );//寄存器保护
delay_init( 240 );//根据系统时钟频率配置延时基准
while( 1 )
{
BSP_LED_On(LED_RED);
BSP_LED_Off(LED_YELLOW);
BSP_LED_Off(LED_BLUE);
delay_ms(500);//延时500MS
BSP_LED_Off(LED_RED);
BSP_LED_On(LED_YELLOW);
BSP_LED_Off(LED_BLUE);
delay_ms(500);//延时500MS
BSP_LED_Off(LED_RED);
BSP_LED_Off(LED_YELLOW);
BSP_LED_On(LED_BLUE);
delay_ms(500);//延时500MS
}
}
4.3实验现象
如视频所示
点亮三色LED灯