EDN首页   博客首页

11

关于投票
汉化STM32F2.02版固件库之五(NVIC)

/******************** (C) COPYRIGHT 2008 STMicroelectronics ********************
* 文件名称: stm32f10x_nvic.c
* 程序作者: MCD Application Team
* 程序版本: V2.0.2
* 编制日期: 07/11/2008
* 功能描述: 这个文件提供了所有NVIC的固件函数.
********************************************************************************
* 目前的固件的目的是为客户提供关于他们的产品的编码信息以便于节省他们时间。
* 结果, 意法半导体将不会为此承担任何直接,间接或相应的损害赔偿方面的任何索赔要求,
* 例如固件或使用所作的客户编码中他涉嫌包含与他们的相关产品的信息。
*******************************************************************************/

/* 包涵的文件 ------------------------------------------------------------------*/
#include "stm32f10x_nvic.h"

/* 自用类型 -----------------------------------------------------------*/
/* 自用定义 ------------------------------------------------------------*/
#define AIRCR_VECTKEY_MASK    ((u32)0x05FA0000)

/* 自用宏 -------------------------------------------------------------*/
/* 自用变量 ---------------------------------------------------------*/
/* 自用函数原型 -----------------------------------------------*/
/* 自用函数 ---------------------------------------------------------*/

/*******************************************************************************
* 函数名称: NVIC_DeInit
* 功能描述: 复位NVIC外围设备寄存器为默认的复位值.
* 输入参数: 无
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void NVIC_DeInit(void)
{
  u32 index = 0;
 
  NVIC->ICER[0] = 0xFFFFFFFF;
  NVIC->ICER[1] = 0x0FFFFFFF;
  NVIC->ICPR[0] = 0xFFFFFFFF;
  NVIC->ICPR[1] = 0x0FFFFFFF;
 
  for(index = 0; index < 0x0F; index++)
  {
     NVIC->IPR[index] = 0x00000000;
  }
}

/*******************************************************************************
* 函数名称: NVIC_SCBDeInit
* 功能描述: 复位SCB外围设备寄存器为默认的复位值.
* 输入参数: 无
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void NVIC_SCBDeInit(void)
{
  u32 index = 0x00;
 
  SCB->ICSR = 0x0A000000;
  SCB->VTOR = 0x00000000;
  SCB->AIRCR = AIRCR_VECTKEY_MASK;
  SCB->SCR = 0x00000000;
  SCB->CCR = 0x00000000;
  for(index = 0; index < 0x03; index++)
  {
     SCB->SHPR[index] = 0;
  }
  SCB->SHCSR = 0x00000000;
  SCB->CFSR = 0xFFFFFFFF;
  SCB->HFSR = 0xFFFFFFFF;
  SCB->DFSR = 0xFFFFFFFF;
}

下面还有但是都贴上来版面太长不好看,就放在附件里了,欢迎下载.

stm32f10x_nvic.c点击下载请您在下载的同时到左上角顶我一下,以示支持!谢谢

系统分类: 单片机
用户分类: STM32F
标签: STM32F,中文,汉化,固件库,NVIC
来源: 原创
发表评论 阅读全文(681) | 回复(7)

15

关于投票
汉化STM32F2.02版固件库之四(EXTI)

这个库的内容不多,就都贴上来了.请您在下载的同时到左上角顶我一下,以示支持!谢谢

/******************** (C) COPYRIGHT 2008 STMicroelectronics ********************
* 文件名称: stm32f10x_exti.c
* 程序作者: MCD Application Team
* 程序版本: V2.0.2
* 编制日期: 07/11/2008
* 功能描述: 这个文件提供了所有EXTI的固件函数.
********************************************************************************
* 目前的固件的目的是为客户提供关于他们的产品的编码信息以便于节省他们时间。
* 结果, 意法半导体将不会为此承担任何直接,间接或相应的损害赔偿方面的任何索赔要求,
* 例如固件或使用所作的客户编码中他涉嫌包含与他们的相关产品的信息。
*******************************************************************************/

/* 包涵的文件 ------------------------------------------------------------------*/
#include "stm32f10x_exti.h"

/* 自用类型 -----------------------------------------------------------*/
/* 自用定义 ------------------------------------------------------------*/
#define EXTI_LineNone    ((u32)0x00000)  /* No interrupt selected */

/* 自用宏 -------------------------------------------------------------*/
/* 自用变量 ---------------------------------------------------------*/
/* 自用函数原型 -----------------------------------------------*/
/* 自用函数 ---------------------------------------------------------*/

/*******************************************************************************
* 函数名称: EXTI_DeInit
* 功能描述: 将EXTI外设寄存器复位到默认值.
* 输入参数: 无
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void EXTI_DeInit(void)
{
  EXTI->IMR = 0x00000000;
  EXTI->EMR = 0x00000000;
  EXTI->RTSR = 0x00000000;
  EXTI->FTSR = 0x00000000;
  EXTI->PR = 0x0007FFFF;
}

/*******************************************************************************
* 函数名称: EXTI_Init
* 功能描述: 根据EXIT_InitStruct中指定的参数初始化EXTI外设
* 输入参数: EXTI_InitStruct:指向EXTI_InitTypeDef的结构,它包含特定EXTI的配置信息。
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct)
{
  /* Check the parameters [检查参数]*/
  assert_param(IS_EXTI_MODE(EXTI_InitStruct->EXTI_Mode));
  assert_param(IS_EXTI_TRIGGER(EXTI_InitStruct->EXTI_Trigger));
  assert_param(IS_EXTI_LINE(EXTI_InitStruct->EXTI_Line)); 
  assert_param(IS_FUNCTIONAL_STATE(EXTI_InitStruct->EXTI_LineCmd));
    
  if (EXTI_InitStruct->EXTI_LineCmd != DISABLE)
  {
    /* Clear EXTI line configuration [清除外部中断线配置]*/
    EXTI->IMR &= ~EXTI_InitStruct->EXTI_Line;
    EXTI->EMR &= ~EXTI_InitStruct->EXTI_Line;
   
    *(vu32 *)(EXTI_BASE + (u32)EXTI_InitStruct->EXTI_Mode)|= EXTI_InitStruct->EXTI_Line;

    /* Clear Rising Falling edge configuration [清除上升沿下降沿边沿配置]*/
    EXTI->RTSR &= ~EXTI_InitStruct->EXTI_Line;
    EXTI->FTSR &= ~EXTI_InitStruct->EXTI_Line;
   
    /* Select the trigger for the selected external interrupts [选择触发已选择的外部中断]*/
    if (EXTI_InitStruct->EXTI_Trigger == EXTI_Trigger_Rising_Falling)
    {
      /* Rising Falling edge [上升沿下降沿边沿]*/
      EXTI->RTSR |= EXTI_InitStruct->EXTI_Line;
      EXTI->FTSR |= EXTI_InitStruct->EXTI_Line;
    }
    else
    {
      *(vu32 *)(EXTI_BASE + (u32)EXTI_InitStruct->EXTI_Trigger)|= EXTI_InitStruct->EXTI_Line;
    }
  }
  else
  {
    /* Disable the selected external lines [禁止选中的外部中断线]*/
    *(vu32 *)(EXTI_BASE + (u32)EXTI_InitStruct->EXTI_Mode)&= ~EXTI_InitStruct->EXTI_Line;
  }
}

/*******************************************************************************
* 函数名称: EXTI_StructInit
* 功能描述: 将EXTI_InitStruct成员置为默认值
* 输入参数: EXTI_InitStruct:指向EXTI_InitTypeDef结构,该结构将被初始化。
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void EXTI_StructInit(EXTI_InitTypeDef* EXTI_InitStruct)
{
  EXTI_InitStruct->EXTI_Line = EXTI_LineNone;
  EXTI_InitStruct->EXTI_Mode = EXTI_Mode_Interrupt;
  EXTI_InitStruct->EXTI_Trigger = EXTI_Trigger_Falling;
  EXTI_InitStruct->EXTI_LineCmd = DISABLE;
}

/*******************************************************************************
* 函数名称: EXTI_GenerateSWInterrupt
* 功能描述: 产生一个软件中断
* 输入参数: EXTI_Line:将被使能(或禁能)的EXTI线。该参数可取值的值在0到18之间 。
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void EXTI_GenerateSWInterrupt(u32 EXTI_Line)
{
  /* Check the parameters [检查参数]*/
  assert_param(IS_EXTI_LINE(EXTI_Line));
 
  EXTI->SWIER |= EXTI_Line;
}

/*******************************************************************************
* 函数名称: EXTI_GetFlagStatus
* 功能描述: Checks whether the specified EXTI line flag is set or not.
* 输入参数: 检查特定的EXTI行标志是否被置位
*                    这个参数可以是:
*                       - EXTI_Linex: 外部中断线x ,x取值(0..18)
* 输出参数: 无
* 返回参数: EXTI_Line的新状态(SET或RESET).
*******************************************************************************/
FlagStatus EXTI_GetFlagStatus(u32 EXTI_Line)
{
  FlagStatus bitstatus = RESET;

  /* Check the parameters [检查参数]*/
  assert_param(IS_GET_EXTI_LINE(EXTI_Line));
 
  if ((EXTI->PR & EXTI_Line) != (u32)RESET)
  {
    bitstatus = SET;
  }
  else
  {
    bitstatus = RESET;
  }
  return bitstatus;
}

/*******************************************************************************
* 函数名称: EXTI_ClearFlag
* 功能描述: 清除EXTI线的挂起标志.
* 输入参数: EXTI_Line:将被清除的EXTI线标志。
*                    这个参数可以是任意EXTI_Linex组合,x可以是0到18.
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void EXTI_ClearFlag(u32 EXTI_Line)
{
  /* Check the parameters [检查参数]*/
  assert_param(IS_EXTI_LINE(EXTI_Line));
 
  EXTI->PR = EXTI_Line;
}

/*******************************************************************************
* 函数名称: EXTI_GetITStatus
* 功能描述: 检查特定的EXTI行是否被置位有效电平.
* 输入参数: EXTI_Line:需要检查的挂起位。
*                    这个参数可以是:EXTI_Linex: 外部中断线x,x可以取0到18。
* 输出参数: 无
* 返回参数: EXTI_Line的新状态(SET或RESET).
*******************************************************************************/
ITStatus EXTI_GetITStatus(u32 EXTI_Line)
{
  ITStatus bitstatus = RESET;
  u32 enablestatus = 0;

  /* Check the parameters [检查参数]*/
  assert_param(IS_GET_EXTI_LINE(EXTI_Line));
 
  enablestatus =  EXTI->IMR & EXTI_Line;

  if (((EXTI->PR & EXTI_Line) != (u32)RESET) && (enablestatus != (u32)RESET))
  {
    bitstatus = SET;
  }
  else
  {
    bitstatus = RESET;
  }
  return bitstatus;
}

/*******************************************************************************
* 函数名称: EXTI_ClearITPendingBit
* 功能描述: 清除EXTI的行挂起位
* 输入参数: EXTI_Line:将被清除的EXTI行挂起位。
*                    这个参数可以是:EXTI_Linex: 外部中断线x,x可以取0到18。
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void EXTI_ClearITPendingBit(u32 EXTI_Line)
{
  /* Check the parameters [检查参数]*/
  assert_param(IS_EXTI_LINE(EXTI_Line));
 
  EXTI->PR = EXTI_Line;
}

/******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/

系统分类: 单片机
用户分类: STM32F
标签: STM32F,中文,汉化,固件库,EXTI
来源: 原创
发表评论 阅读全文(671) | 回复(5)

14

关于投票
汉化STM32F2.02版固件库之三(GPIO)

 

/******************** (C) COPYRIGHT 2008 STMicroelectronics ********************
* 文件名称: stm32f10x_gpio.c
* 程序作者: MCD Application Team
* 程序版本: V2.0.2
* 编制日期: 07/11/2008
* 功能描述: 这个文件提供了所有GPIO的固件函数.
********************************************************************************
* 目前的固件的目的是为客户提供关于他们的产品的编码信息以便于节省他们时间。
* 结果, 意法半导体将不会为此承担任何直接,间接或相应的损害赔偿方面的任何索赔要求,
* 例如固件或使用所作的客户编码中他涉嫌包含与他们的相关产品的信息。
*******************************************************************************/

/* 包涵的文件 ------------------------------------------------------------------*/
#include "stm32f10x_gpio.h"
#include "stm32f10x_rcc.h"

/* 自用类型 -----------------------------------------------------------*/
/* 自用定义 ------------------------------------------------------------*/
/* ------------ RCC registers bit address in the alias region ----------- */
#define AFIO_OFFSET                 (AFIO_BASE - PERIPH_BASE)

/* --- EVENTCR Register ---*/
/* Alias word address of EVOE bit */
#define EVCR_OFFSET                 (AFIO_OFFSET + 0x00)
#define EVOE_BitNumber              ((u8)0x07)
#define EVCR_EVOE_BB                (PERIPH_BB_BASE + (EVCR_OFFSET * 32) + (EVOE_BitNumber * 4))

#define EVCR_PORTPINCONFIG_MASK     ((u16)0xFF80)
#define LSB_MASK                    ((u16)0xFFFF)
#define DBGAFR_POSITION_MASK        ((u32)0x000F0000)
#define DBGAFR_SWJCFG_MASK          ((u32)0xF0FFFFFF)
#define DBGAFR_LOCATION_MASK        ((u32)0x00200000)
#define DBGAFR_NUMBITS_MASK         ((u32)0x00100000)

/* 自用宏 -------------------------------------------------------------*/
/* 自用变量 ---------------------------------------------------------*/
/* 自用函数原型 -----------------------------------------------*/
/* 自用函数 ---------------------------------------------------------*/
完整的库文件stm32f10x_gpio.c点击下载请您在下载的同时到左上角顶我一下,以示支持!谢谢

系统分类: 单片机
用户分类: STM32F
标签: STM32F,中文,汉化,固件库,GPIO
来源: 原创
发表评论 阅读全文(718) | 回复(2)

10

关于投票
汉化STM32F固件库2.02版之二(BKP)

/******************** (C) COPYRIGHT 2008 STMicroelectronics ********************
* 文件名称: stm32f10x_bkp.c
* 程序作者: MCD Application Team
* 程序版本: V2.0.2
* 编制日期: 07/11/2008
* 功能描述: 这个文件提供了所有BKP的固件函数.
********************************************************************************
* 目前的固件的目的是为客户提供关于他们的产品的编码信息以便于节省他们时间。
* 结果, 意法半导体将不会为此承担任何直接,间接或相应的损害赔偿方面的任何索赔要求,
* 例如固件或使用所作的客户编码中他涉嫌包含与他们的相关产品的信息。
*******************************************************************************/

/* 包涵的文件 ------------------------------------------------------------------*/
#include "stm32f10x_bkp.h"
#include "stm32f10x_rcc.h"

/* 自用类型 -----------------------------------------------------------*/
/* 自用定义 ------------------------------------------------------------*/
stm32f10x_bkp.c点击下载请您在下载的同时到左上角顶我一下,以示支持!谢谢

系统分类: 单片机
用户分类: STM32F
标签: STM32F,中文,汉化,固件库,BKP
来源: 原创
发表评论 阅读全文(567) | 回复(0)

21

关于投票
汉化STM32F2.02版固件库之一(ADC)

本文适用于那些不愿意看英文资料的stm32f初学者,由于本人的英文水平有限而且也是stm32f的初学者,大多数地方保留了中英文对照,有不对的地方欢迎指正。我也希望获得您的支持鼓励我继续翻译其他功能的固件库,同时也欢迎朋友们的加入和我一起汉化所有的固件库。支持我的请顶我一下,反对我的请在下面留言。

本文参考了MXCHIP翻译的《基于ARM 的32 位MCU STM32F101xx 和STM32F103xx固件库

请点击下载点击下载请您在下载的同时到左上角顶我一下,以示支持!谢谢

/* 自用宏 -----------------------------------------------------------*/
/* 自用变量 ---------------------------------------------------------*/
/* 自用函数原型 -----------------------------------------------------*/
/* 自用函数 ---------------------------------------------------------*/

/*******************************************************************************
* 函数名称: ADC_DeInit
* 功能描述: 复位ADCx外围模块寄存器,使其为默认值。
* 输入参数: ADCx: 其中x可以是1、2或3,用来选择ADC外围模块.
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void ADC_DeInit(ADC_TypeDef* ADCx)
{
  /* Check the parameters [检查参数 检查参数]*/
  assert_param(IS_ADC_ALL_PERIPH(ADCx));

  switch (*(u32*)&ADCx)
  {
    case ADC1_BASE:
      /* Enable ADC1 reset state [允许ADC1复位状态]*/
      RCC_APB2PeriphResetCmd(RCC_APB2Periph_ADC1, ENABLE);
      /* Release ADC1 from reset state [解除ADC1复位状态]*/
      RCC_APB2PeriphResetCmd(RCC_APB2Periph_ADC1, DISABLE);
      break;
   
    case ADC2_BASE:
      /* Enable ADC2 reset state [允许ADC2复位状态]*/
      RCC_APB2PeriphResetCmd(RCC_APB2Periph_ADC2, ENABLE);
      /* Release ADC2 from reset state [解除ADC2复位状态]*/
      RCC_APB2PeriphResetCmd(RCC_APB2Periph_ADC2, DISABLE);
      break;
     
    case ADC3_BASE:
      /* Enable ADC3 reset state [允许ADC3复位状态]*/
      RCC_APB2PeriphResetCmd(RCC_APB2Periph_ADC3, ENABLE);
      /* Release ADC3 from reset state [解除ADC3复位状态]*/
      RCC_APB2PeriphResetCmd(RCC_APB2Periph_ADC3, DISABLE);
      break;

    default:
      break;
  }
}

系统分类: 单片机
用户分类: STM32F
标签: stm32f,固件库,汉化,adc
来源: 原创
发表评论 阅读全文(1518) | 回复(1)
总共 , 当前 /