[原创] 从51入门STM32----第二步:GPIO使用---点亮LED灯

upc_arm   2012-3-10 19:12 楼主
继续 从51入门STM32----第一步:新建自己的工程 移植固件库
第二步:GPIO使用---点亮LED灯
1。首先对STM32的系统结构稍微了解一下
2。其次对STM32的存储器结构了解一下,图见编程手册中文28页 存储器映射
      最好再看一下英文的  英文的更详细
      比如说STM32F103C8  有64K Flash 和 20K SRAM
      其中64K  Flash的地址空间为: 0x8000 0000 --- 0x8000 FFFF
             20K SRAM的地址空间为: 0x2000 0000 --- 0x2000 5000
3。大概了解一下STM32的时钟配置,在《糊里糊涂学STM》中讲到 使用SystemInit()简单的配置系统时钟
     在使用固件库带的例程(GPIO的例程)的话,
     /*!< At this stage the microcontroller clock setting is already configured, 
       this is done through SystemInit() function which is called from startup
       file (startup_stm32f10x_xx.s) before to branch to application main.
       To reconfigure the default setting of SystemInit() function, refer to
       system_stm32f10x.c file
     */
      系统时钟已经在startup_stm32f10x_xx.s中进行了配置,因此目前可以先不配置。
4。对STM32的GPIO了解一下
     详细查看中文编程手册,还有模电、数电知识,本人学术浅薄,也搞的不深入。
     最后开始编程,配置GPIO引脚,就可以点亮LED灯了。
  1. GPIO_InitTypeDef GPIO_InitStructure;
    int tmp_val = 0;

    /* Configure the system clocks */
    SystemInit();
    RCC_Configuration();

    //使能APB2总线外设时钟
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE);
    GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE); //关闭调试 端口重新映射

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

    GPIO_Init(GPIOB, &GPIO_InitStructure);
    GPIO_Write(GPIOB , 0xFFFF);
    while (1)
    {
    GPIO_Write(GPIOB , ~tmp_val);
    Delay(0x2FFFFF); // 延时
    Delay(0x2FFFFF); // 延时
    tmp_val++;
    if(tmp_val == 0x100) tmp_val = 0;
    }

回复评论 (2)


  • 1.jpg
点赞  2012-3-10 19:16
很好,楼主再接再厉啊
点赞  2012-3-10 19:53
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复