任何一款开发板,都要从硬件原理,再到软件编程开始,那么首先开始的肯定是LED。
1. 电路上还是非常满意,首先,IO通过灌电流驱动一个LED足够有余,但是板子并没有节省成本去这样做,还是采用传统的三极管放大电路,去驱动LED。
2. 关于GPIO的配置,需要的注意如下:
官方历程的配置很随意,明明是LED输出,使能外部中断干啥呢?该有配置却没有;
修改后如下:
驱动能力配置为最高,且非开漏(CMOS)输出。
stc_port_init_t stcPortInit;
/* configuration structure initialization */
MEM_ZERO_STRUCT(stcPortInit);
stcPortInit.enPinMode = Pin_Mode_Out;
stcPortInit.enPinDrv = Pin_Drv_H;
stcPortInit.enPinOType = Pin_OType_Cmos;
stcPortInit.enPullUp = Enable;
/* LED0 Port/Pin initialization */
PORT_Init(LED0_PORT, LED0_PIN, &stcPortInit);
/* LED1 Port/Pin initialization */
PORT_Init(LED1_PORT, LED1_PIN, &stcPortInit);
/* LED2 Port/Pin initialization */
PORT_Init(LED2_PORT, LED2_PIN, &stcPortInit);
/* LED3 Port/Pin initialization */
PORT_Init(LED3_PORT, LED3_PIN, &stcPortInit);
对于初始化后的输出IO口,必须给一个初始电平,这是一个良好的编程习惯。
///< LED关闭
PORT_ResetBits(LED0_PORT, LED0_PIN);
PORT_ResetBits(LED1_PORT, LED1_PIN);
PORT_ResetBits(LED2_PORT, LED2_PIN);
PORT_ResetBits(LED3_PORT, LED3_PIN);
自己编写一个bsp驱动,添加进工程即可。
效果图:
工程文件:
hc32f46x_ddl.rar
(1.69 MB)
|