《无刷直流电机》第2章STM8微处理器开发环境(6) - 技术资料 - 电子技术论坛 - 最好最受欢迎电子论坛!

《无刷直流电机》第2章STM8微处理器开发环境(6)

本帖最后由 优易特电子 于 2015-1-27 17:41 编辑

续(5)。。。

2.5.2 压缩包描述
固件函数库被压缩在一个ZIP文件中,文件名:stsw-stm8069.zip。解压缩该文件会产生一个文件夹,包含如图2-73所示的文件列表。
2-73 固件库文件列表
文件夹“STM8S_StdPeriph_Examples ”,对应每一个外设,都包含一个子文件夹。这些子文件夹包含了整套文件组成典型的例子,来示范如何使用对应外设。这些文件有:
readme.txt: 每个例子的简单描述和使用说明。
stm8s_conf.h: 该头文件设置了所有使用到的外设,外设的宏定义在不同的头文件中。
stm8s_it.c: 该源文件包含了所有的中断处理程序(如果未使用中断,则所有的函数体都为空)。
stm8s_it.h: 该头文件包含了所有的中断处理程序的函数声明原形。
Main.c: 例程代码。
文件夹Libraries包含了组成固件函数库核心的所有子文件夹和文件。子文件夹INC包含了固件函数库所需的头文件,用户无需修改该文件夹。子文件夹SRC包含了固件函数库所需的源文件,用户无需修改该文件夹。
文件夹Project中的Template文件夹中包含了一个标准的程序项目模板,包括库文件的编译和所有用户可修改的文件。用户也可自己建立新的工程。
2.5.3 文档和库规范1.缩写
固件库中所有缩写定义如表2-11        
2-11 固件库缩写定义
缩写
外设/单元
ADC
Analog to digital converter
BEEP
Beeper
CLK
Clock controller
CAN
CAN
EXti
External interrupt/event controller
FLASH
Flash memory
GPIO
General purpose I/O
I2C
Inter-integrated circuit
ITC
Interrupt controller
IWDG
Independent watchdog
RST
Reset controller
SPI
Serial peripheral interface
TIM1
16-bit advanced control timer
TIM2, TIM3, TIM5, TIM6
16-bit general purpose timers
TIM4
8-bit basic timer
UART
Universal asynchronous receiver transmitter
WWDG
Window watchdog

2.命名规则
标准固件函数库遵从以下命名规则。
PPP表示任一外设缩写,例如:TIM2TIM3。更多缩写参阅表2-11
系统、源程序文件和头文件命名都以“stm8s_”作为开头。
常量仅被应用于一个文件的,定义于该文件中;被应用于多个文件的,在对应头文件中定义。所有常量都由英文字母大写书写。
寄存器作为常量处理。他们的命名都由英文字母大写书。
外设函数的命名以该外设的缩写加下划线为开头。每个单词的第一个字母都由英文字母大写书写。例如:SPI_SendData。在函数名中,只允许存在一个下划线,用以分隔外设缩写和函数名的其它部分。
名为PPP_Init的函数,其功能是根据头文件中指定的参数初始化外设PPP,例如:TIM2_Init
名为PPP_DeInit的函数,其功能为复位外设PPP的所有寄存器至缺省值,例如:TIM2_DeInit
名为PPP_Cmd的函数,其功能为使能或禁止使用外设PPP,例如:SPI_Cmd
名为PPP_ITConfig的函数,其功能为使能或禁止来自外设PPP的某中断源,例如:SPI_ITConfig
用以配置外设功能的函数,总是以字符串“Config”结尾,例如:TIM2_ETRConfig
名为PPP_GetFlagStatus的函数,其功能为检查外设PPP某标志位被设置与否,例如:I2C_GetFlagStatus
名为PPP_ClearFlag的函数,其功能为清除外设PPP标志位,例如:I2C_ClearFlag
名为PPP_GetITStatus的函数,其功能为判断来自外设PPP的中断发生与否,例如:TIM2_GetITStatus
名为PPP_ClearITPendingBit的函数,其功能为清除外设PPP中断待处理标志位,例如:TIM2_ClearITPendingBit
3.编码规则
固件函数库定义的变量,他们的类型和大小都是固定的。这些类型定义在文件stm8s.h中:
#define     __I     volatile const            /*!< defines 'read only' permissions      */
#define     __O     volatile                  /*!< defines 'write only' permissions     */
#define     __IO    volatile                  /*!< defines 'read / write' permissions   */

/*!< Constant qualifier */
#ifdef _COSMIC_
#define __CONST  const
#else /* _RAISONANCE_*/
#define __CONST  code
#endif /*_COSMIC_*/

/*!< Signed integer types  */
typedef   signed char     int8_t;
typedef   signed short    int16_t;
typedef   signed long     int32_t;

/*!< Unsigned integer types  */
typedef unsigned char     uint8_t;
typedef unsigned short    uint16_t;
typedef unsigned long     uint32_t;
typedef enum {FALSE = 0, TRUE = !FALSE} bool;
typedef enum {RESET = 0, SET = !RESET} FlagStatus, ITStatus, BitStatus, BitAction;
typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState;
typedef enum {ERROR = 0, SUCCESS = !ERROR} ErrorStatus;
用户可以通过指向各个外设的指针访问各外设的控制寄存器。每个外设都有它自己的数据结构和指针。所有结构都定义在stm8s.h文件中。
寄存器结构定义,举例:
typedef struct SPI_struct
{
    __IO uint8_t CR1;    /*!< SPI control register 1 */
    __IO uint8_t CR2;    /*!< SPI control register 2 */
    __IO uint8_t CR3;    /*!< SPI DMA and interrupt control register */
    __IO uint8_t SR;     /*!< SPI status register */
    __IO uint8_t DR;     /*!< SPI data I/O register */
    __IO uint8_t CRCPR;  /*!< SPI CRC polynomial register */
    __IO uint8_t RXCRCR; /*!< SPI Rx CRC register */
    __IO uint8_t TXCRCR; /*!< SPI Tx CRC register */
}
SPI_TypeDef;
外设声明,举例:
#define SPI1_BaseAddress      (uint16_t)0x5200
#define SPI1 ((SPI_TypeDef *) SPI1_BaseAddress)
寄存器访问:SPI1->CR1 = 0x01;
所有外设寄存器的复位值被定义为在stm8s.h文件中。
格式如:PPP_ _RESET_VALUE
举例:
#define SPI_CR1_RESET_VALUE    ((uint8_t)0x00) /*!< Control Register 1 reset value */
#define SPI_CR2_RESET_VALUE    ((uint8_t)0x00) /*!< Control Register 2 reset value */
#define SPI_CR3_RESET_VALUE    ((uint8_t)0x00) /*!< DMA and Interrupt Control Register reset value */
#define SPI_SR_RESET_VALUE     ((uint8_t)0x02) /*!< Status Register reset value */
#define SPI_DR_RESET_VALUE     ((uint8_t)0x00) /*!< Data Register reset value */
#define SPI_CRCPR_RESET_VALUE  ((uint8_t)0x07) /*!< Polynomial Register reset value */
#define SPI_RXCRCR_RESET_VALUE ((uint8_t)0x00) /*!< RX CRC Register reset value */
#define SPI_TXCRCR_RESET_VALUE ((uint8_t)0x00) /*!< TX CRC Register reset value */
外设寄存器的所有位被定义为在stm8s.h文件中。
格式如:PPP__
举例:
#define SPI_CR1_LSBFIRST ((uint8_t)0x80) /*!< Frame format mask */
#define SPI_CR1_SPE      ((uint8_t)0x40) /*!< Enable bits mask */
#define SPI_CR1_BR       ((uint8_t)0x38) /*!< Baud rate control mask */
#define SPI_CR1_MSTR     ((uint8_t)0x04) /*!< Master Selection mask */
#define SPI_CR1_CPOL     ((uint8_t)0x02) /*!< Clock Polarity mask */
#define SPI_CR1_CPHA     ((uint8_t)0x01) /*!< Clock Phase mask */





0个回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则


关闭

站长推荐上一条 /7 下一条

小黑屋|手机版|Archiver|电子发烧友 ( 湘ICP备2023018690号 )

GMT+8, 2024-11-20 07:21 , Processed in 0.591777 second(s), Total 58, Slave 41 queries .

Powered by 电子发烧友网

© 2015 bbs.elecfans.com

微信扫描
快速回复 返回顶部 返回列表