// HC32L130 - DDL库 GPIO 闪烁
#include "hc32l13x.h"
int main(void) {
Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio, TRUE);
Gpio_InitIO(0, 0, GpioDirOut); // P00 输出
while(1) {
Gpio_SetIO(0, 0);
delay1ms(500);
Gpio_ClrIO(0, 0);
delay1ms(500);
}
}
| 引脚号 | 引脚名 | 主要复用功能 |
|---|---|---|
| 1 | PA0 | GPIO / ADC_IN0 / TIM2_CH1 / UART2_TX |
| 2 | PA1 | GPIO / ADC_IN1 / TIM2_CH2 / UART2_RX |
| 3 | PA2 | GPIO / ADC_IN2 / TIM2_CH3 / UART1_TX |
| 4 | PA3 | GPIO / ADC_IN3 / TIM2_CH4 / UART1_RX |
| 5 | PA4 | GPIO / ADC_IN4 / SPI1_NSS / TIM3_CH1 |
| 6 | PA5 | GPIO / ADC_IN5 / SPI1_SCK / TIM3_CH2 |
| 7 | PA6 | GPIO / ADC_IN6 / SPI1_MISO / TIM3_CH3 |
| 8 | PA7 | GPIO / ADC_IN7 / SPI1_MOSI / TIM3_CH4 |
| 9 | PB0 | GPIO / ADC_IN8 / I2C1_SCL / TIM1_CH2N |
| 10 | PB1 | GPIO / ADC_IN9 / I2C1_SDA / TIM1_CH3N |
| 11 | PB2 | GPIO / BOOT0 / LVD_IN |
| 12 | PB3 | GPIO / SWO / TIM1_CH1 / SPI2_SCK |
| 13 | PB4 | GPIO / SWDIO / TIM1_CH2 / SPI2_MISO |
| 14 | PB5 | GPIO / SWCLK / TIM1_CH3 / SPI2_MOSI |
| 15 | PB6 | GPIO / I2C1_SCL / UART1_TX / TIM1_CH0 |
| 16 | PB7 | GPIO / I2C1_SDA / UART1_RX / TIM1_CH1 |
| 17 | PC0 | GPIO / OSC_IN / LSE_IN |
| 18 | PC1 | GPIO / OSC_OUT / LSE_OUT |
| 19 | PC2 | GPIO / VCAP |
| 20 | VDD | 电源 1.8~5.5V |
// 小华 DDL 库 - GPIO 配置
#include "hc32f005.h"
void GPIO_Init(void) {
stc_gpio_cfg_t stcGpioCfg;
// 开启GPIO时钟
Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio, TRUE);
// PA0 推挽输出
stcGpioCfg.enDir = GpioDirOut;
stcGpioCfg.enDrv = GpioDrvH;
Gpio_Init(GpioPortA, GpioPin0, &stcGpioCfg);
}
int main(void) {
GPIO_Init();
while(1) {
Gpio_SetIO(GpioPortA, GpioPin0); // 置高
delay1ms(500);
Gpio_ClrIO(GpioPortA, GpioPin0); // 置低
delay1ms(500);
}
}
// 小华 DDL 库 - UART1 配置
#include "hc32f005.h"
void UART1_Init(uint32_t baud) {
stc_uart_cfg_t stcCfg;
Sysctrl_SetPeripheralGate(SysctrlPeripheralUart1, TRUE);
// PA2=TX, PA3=RX
Gpio_SetAfMode(GpioPortA, GpioPin2, GpioAf1);
Gpio_SetAfMode(GpioPortA, GpioPin3, GpioAf1);
stcCfg.enRunMode = UartMskMode1;
stcCfg.stcBaud.u32Baud = baud;
stcCfg.stcBaud.enClkDiv = UartMskBaudDivm128;
Uart_Init(UART1, &stcCfg);
Uart_EnableIrq(UART1, UartRxIrq);
EnableNvic(UART1_IRQn, IrqLevel3, TRUE);
}
void UART1_SendChar(char c) {
Uart_SendData(UART1, c);
while(Uart_GetStatus(UART1, UartTxEmpty) == FALSE);
}
// 小华 DDL 库 - ADC 单次转换
#include "hc32f005.h"
uint16_t ADC_Read(uint8_t ch) {
stc_adc_cfg_t stcAdcCfg;
stc_adc_norm_cfg_t stcNormCfg;
Sysctrl_SetPeripheralGate(SysctrlPeripheralAdc, TRUE);
// PA0 模拟输入
Gpio_SetAnalogMode(GpioPortA, GpioPin0);
DDL_ZERO_STRUCT(stcAdcCfg);
stcAdcCfg.enAdcMode = AdcSglMode;
Adc_Init(&stcAdcCfg);
DDL_ZERO_STRUCT(stcNormCfg);
stcNormCfg.enAdcInCh = ch;
Adc_ConfigNormMode(&stcNormCfg);
Adc_Start();
while(Adc_GetEocFlag() == FALSE);
return Adc_GetNormResultData();
}
| 区域 | 起始地址 | 结束地址 | 说明 |
|---|---|---|---|
| Flash | 0x08000000 | — | 主闪存 |
| SRAM | 0x20000000 | — | 静态RAM |
| Peripherals | 0x40000000 | 0x5FFFFFFF | 外设寄存器 |
| Core | 0xE0000000 | 0xE00FFFFF | 内核外设(NVIC/SysTick) |
// GPIO 初始化 + 翻转示例
// 请参考官方数据手册和库函数文档