本帖最后由 outstanding 于 2014-3-18 17:07 编辑
本节我们将从硬件原理图、软件编写和下载验证3部分来分析,主要是从下面3个方面进行讲解: 1.硬件原理图 2.软件编写 3.下载验证 一、硬件原理图 硬件原理图很简单,在本序列的跑马灯里面就有。这里就不作过多的介绍。 下面主要看的是STM32F4探索套件的LED灯部分的原理图。 从上面的原理可以看见,很简单,只要给一个高电平LED就会亮,这就不多讲了。STM32F4探索套件就是两个用户LED灯,LED3和LED4一个位绿色,一个为红色。 二、软件编写 在写程序的时候,首先按一下步骤检查是否已经完备。 1.确保JP3和CN4跳线是连接的【Discovery模式】。 2.通过Min USB把开发板和电脑连接,USB供电。 3.通过ST-Link/V2来下载程序。 4.检查USB通讯的LED1灯是否亮,电源灯LED2是否亮(3.3v) 5.以上正常就可以进行下面的工作了。 这个是官网的一个精简的代码,没有使用ST的库,是寄存器操作的,大家可以参考,效率的确很高。不多说,先上主程序,完整程序在附件里面。 #include "STM32F4xx.h" #include "LED.h" const unsigned long led_mask[] = {1UL << 13, 1UL << 14}; void LED_Init (void) { RCC->AHB1ENR |= (1UL << 6); /* Enable GPIOG clock */ /* Configure LED (PG13, PG148) pins as push-pull outputs */ GPIOG->MODER &= ~((3UL << 2 * 13) | (3UL << 2 * 14)); GPIOG->MODER |= (1UL << 2 * 13) | (1UL << 2 * 14); GPIOG->OTYPER &= ~((1UL << 6) | (1UL << 8)); } /*---------------------------------------------------------------------------- Function that turns on requested LED *----------------------------------------------------------------------------*/ void LED_On (unsigned int num) { if (num < LED_NUM) { GPIOG->BSRRL = led_mask[num]; } } /*---------------------------------------------------------------------------- Function that turns off requested LED *----------------------------------------------------------------------------*/ void LED_Off (unsigned int num) { if (num < LED_NUM) { GPIOG->BSRRH = led_mask[num]; } } /*---------------------------------------------------------------------------- Function that outputs value to LEDs *----------------------------------------------------------------------------*/ void LED_Out(unsigned int value) { int i; for (i = 0; i < LED_NUM; i++) { if (value & (1<<i)) { LED_On (i); } else { LED_Off(i); } } } 是不是很精简啊。 三、下载验证
完整程序下载:
ST精简LED灯代码.zip
(40 KB)
|