// HC32F005 - DDL库 GPIO 闪烁
#include "hc32f005.h"
int main(void) {
Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio, TRUE);
Gpio_InitIO(0, 1, GpioDirOut); // P01 输出
while(1) {
Gpio_SetIO(0, 1);
delay1ms(500);
Gpio_ClrIO(0, 1);
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 |
// 灵动微 MM32 标准库 - GPIO
#include "mm32l0020.h"
void GPIO_Init(void) {
GPIO_InitTypeDef g;
RCC_AHBPeriphClockCmd(RCC_AHBENR_GPIOA, ENABLE);
g.GPIO_Pin = GPIO_Pin_0;
g.GPIO_Mode = GPIO_Mode_Out_PP; // 推挽输出
g.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &g);
}
int main(void) {
GPIO_Init();
while(1) {
GPIO_SetBits(GPIOA, GPIO_Pin_0);
delay_ms(500);
GPIO_ResetBits(GPIOA, GPIO_Pin_0);
delay_ms(500);
}
}
// 灵动微 MM32 标准库 - UART1
#include "mm32l0020.h"
void UART1_Init(uint32_t baud) {
GPIO_InitTypeDef g;
UART_InitTypeDef u;
RCC_APB2PeriphClockCmd(RCC_APB2ENR_UART1, ENABLE);
RCC_AHBPeriphClockCmd(RCC_AHBENR_GPIOA, ENABLE);
// PA2=TX, PA3=RX
g.GPIO_Pin = GPIO_Pin_2; g.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOA, &g);
g.GPIO_Pin = GPIO_Pin_3; g.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA, &g);
u.UART_BaudRate = baud;
u.UART_WordLength = UART_WordLength_8b;
u.UART_StopBits = UART_StopBits_1;
u.UART_Parity = UART_Parity_No;
u.UART_Mode = UART_Mode_Rx | UART_Mode_Tx;
UART_Init(UART1, &u);
UART_Cmd(UART1, ENABLE);
}
int fputc(int ch, FILE *f) {
UART_SendData(UART1, (uint8_t)ch);
while(UART_GetFlagStatus(UART1, UART_FLAG_TXE) == RESET);
return ch;
}
| 区域 | 起始地址 | 结束地址 | 说明 |
|---|---|---|---|
| Flash | 0x08000000 | — | 主闪存 |
| SRAM | 0x20000000 | — | 静态RAM |
| Peripherals | 0x40000000 | 0x5FFFFFFF | 外设寄存器 |
| Core | 0xE0000000 | 0xE00FFFFF | 内核外设(NVIC/SysTick) |
// GPIO 初始化 + 翻转示例
// 请参考官方数据手册和库函数文档