• 智林STM32程序源代码的分析和整理01(转帖)


    智林STM32程序源代码的分析和整理01

    20091017星期六 9:13:13

    智林STM32程序源代码的分析和整理01

    一、目的

    1、前些天,编写了开发板上键盘扫描、字符输入和简单shell的程序,该程序的编写是在以前工程的基础上修改而成的,源代码的组织比较乱,也没有很好的注释。这两天,先把代码整理一下,加上比较详细的注释,使得可读性、扩展性更好。

    2、乘这个机会,也把程序里与STM32硬件相关的部分好好学习一下。

    二、开发板配置分析

    1PA

       PA0对应按键PB3,开发板右下角。   PA1用于模拟电位器,JP1在这里。 PA2用定时器的PWM产生液晶的背光电源。PA4-PA7用于SPI模式操作SD卡。PA9PA10用于串口0通信。PA11PA12USB差分线。PA13PA14PA15JTAG的三个脚。

       PA3PA8没用到。

    2PB

      PB0用于扬声器,PB2JP4用于Boot1选择。PB3PB4JTAG的另外两个脚。PB5控制绿色指示灯,在SD卡上面。PB6PB7用于I2C的存储器。PB8PB9用于CAN收发器。PB11-PB15用于摇杆按键。

       PB1PB10没有用到

    3PC

      PC0PC7用于液晶的数据口,PB8-PB12分别用于读、写、命令数据选择、复位和片选。PB13PB2按键,在PB3左边。PB14-PB15外接32.768KHz晶振。

    4PD

      PD0-PD1外接12MHz晶振,PD2用于USB的连接断开控制,低电平主机能检测到,高电平断开连接,JP3可直接控制连接。另外还有BOOT 0脚,模式受控于JB5。下面还有复位引脚。这里5个脚加上上面48个,共53个引脚。

    5、电源口

       11个脚,还有电池引脚。

    到这里,开发板的IO配置基本已经很清晰了。

    三、初始化配置程序的编写

    程序中采用ucos操作系统,在调用OS_Init()之前,先调用BSP_Config()进行开发板IO配置工作。下面是程序框架的源代码。

    /* 下面是包含文件*/

    #include "stm32f10x_lib.h"

    #include "bsp_config.h"

    /* 可以在这里定义一些意义较为清晰地常量,如果不用改变,就放在文件user_conf.h*/

    /* 用户自己的全局变量在这里定义,按意义进行组合*/

    static GPIO_InitTypeDef GPIO_InitStructure; //进行GPIO端口设置的数据结构

    static NVIC_InitTypeDef NVIC_InitStructure;

     //进行中断设置的数据结构,前面的变量是用typedefnvic的头文件中定义的。

    /* 用户实现的函数在这里声明*/

    void RCC_Config(void);

    void NVIC_Config(void);

    void SysTick_Config(void);

    void GPIO_Config(void);

    void TIM_Config(void);

    void USART_Config(void);

    /* 该函数实现时钟系统、中断、系统时钟和IO口配置的初始化

       实现STM32直接外围器件的初始化*/

    void BSP_Config(void)

    {

      RCC_Config();   //时钟配置

     NVIC_Config(); //中断向量配置,主要工作不在这儿做

     SysTick_Config(); //系统时钟配置,用于usos的时钟

     GPIO_Config();  //通用IO口配置,复用端口单独配置

     

     TIM_Config();   //定时器配置

     UART_Config( ); //异步串行端口配置

    }  

    以下就是这些具体配置函数的源代码,我会边修改边发出来。

    有了这么一个程序框架后,对于不同的应用程序,软件的裁剪就比较方便。

  • 相关阅读:
    Javascript | 模拟mvc实现点餐程序
    DataTables实现按分组小计
    [Webcast]Silverlight探秘系列课程
    python 环境搭建
    MailMessage
    WebRequest
    消息队列(Message Queue)
    c# 缓存
    c# 反射
    数据库连接超时
  • 原文地址:https://www.cnblogs.com/ddlzq/p/1593276.html
Copyright © 2020-2023  润新知