打印
[开发工具]

智林STM32开发板LED程序解析

[复制链接]
2510|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ddllxxrr|  楼主 | 2008-11-13 06:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
智林STM32开发板LED程序解析
关于智林STM32开发板的LED程序解析
智林开发板是完全自主开发板,不象有些大公司,说是自己的开发板,其实是ST公司批发出来的,再卖给买家.再者智林开发板做功精良,用材讲究,有个65536的1.8寸真彩屏,附送的USB线都是上层好线.且物超所值,不贵但性价比很高,其例子超简单,完全没用STM32那个库,当然用户就想用那个库可以自己编写用库的程序,
现就LED程序解析如下:

*/
/*----------------------------------------------------------*
|  引入相关芯片的头文件                                    |
*----------------------------------------------------------*/
#include <stm32f10x_lib.h>                        // STM32F10x Library Definitions
#include "STM32_Init.h"                           // STM32 Initialization
/*----------------------------------------------------------*
| HARDWARE DEFINE                                          |
*----------------------------------------------------------*/
#define LED             ( 1 << 5 )                // PB5: LED D2
/*----------------------------------------------------------*
|  Delay                                                   |
|  延时 Inserts a delay time.                              |
|  nCount: 延时时间                                        |
|  nCount: specifies the delay time length.                |
*----------------------------------------------------------*/
void Delay(vu32 nCount) {
  for(; nCount != 0; nCount--);
  }
/*----------------------------------------------------------*
| MIAN ENTRY                                               |
*----------------------------------------------------------*/
int main (void) {
  stm32_Init ();                                  // STM32 setup
  for(;;) {
    GPIOB->ODR &= ~LED;                           // switch on LED
Delay(2000000);
    GPIOB->ODR |=  LED;                           // switch off LED
Delay(2000000);
    }
  }
/*----------------------------------------------------------*
| END OF FILE                                              |
*----------------------------------------------------------*/

就这么一小段,LED就点亮了,完全没用库,程序空间超小,有人不理解,GPIOB在哪定义了,ODR又是什么,时钟又在哪里,
其实,智林这段程序完全用了,Keil下的那个STM32F10x.s文件
接着是STM32Init.c
在这里初始化实钟
void stm32_Init () {
#if __EFI_SETUP
  stm32_EfiSetup ();
#endif
#if __CLOCK_SETUP
  stm32_ClockSetup ();
#endif
#if __SYSTICK_SETUP
  stm32_SysTickSetup ();
#endif
#if __RTC_SETUP
  stm32_RtcSetup ();
#endif
#if __TIMER_SETUP
  stm32_TimerSetup ();
#endif
#if __GPIO_SETUP
  stm32_GpioSetup ();
#endif
#if __USART_SETUP
  stm32_UsartSetup();
#endif
#if __EXTI_SETUP
  stm32_ExtiSetup();
#endif
#if __TAMPER_SETUP
  stm32_TamperSetup();
#endif
#if __IWDG_SETUP
  stm32_IwdgSetup();   // this should be the last function. watchdog is running afterwards
#endif
} // end of stm32_Init
GPIOB也是在STM32F10x_map.h文件中定义的
而ODR也是在STM32F10x_map.h中定义的
typedef struct
{
  vu32 CRL;
  vu32 CRH;
  vu32 IDR;
  vu32 ODR;
  vu32 BSRR;
  vu32 BRR;
  vu32 LCKR;
} GPIO_TypeDef;

而那个LED灯,硬件接在PB5上
#define LED             ( 1 << 5 )                // PB5: LED D2
根据STM32F10x_map.h,就应射在管亮来寄存器上,所以就点亮了

http://shop35738797.taobao.com/

沙发
jweiok| | 2008-11-13 08:08 | 只看该作者

路过看看


使用特权

评论回复
板凳
tbbt| | 2008-11-14 10:43 | 只看该作者

LZ借光了,打个小广告,嘿嘿

这个就是上面说的那个开发板,说句实话,这个板子确实不错,带的例子很通俗易懂,我玩了1个月就让我从一点不懂STM32到出项目了。

http://auction1.taobao.com/auction/item_detail-0db1-aacf20582821ccb4613b29e9b664b82f.jhtml

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2398

主题

6950

帖子

67

粉丝