原创 汉化STM32F2.02版固件库之四(EXTI)

2008-8-1 22:15 6830 10 17 分类: MCU/ 嵌入式

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


/******************** (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****/

文章评论7条评论)

登录后参与讨论

sunke9_998892717 2009-7-31 10:54

需要看对应的头文件了

用户213184 2009-7-28 17:35

EXTI->IMR = 0x00000000; EXTI_InitStruct->EXTI_Line ;像这些之类的东西我搞不太懂,EXTI是指针吗?这里面好像都没定义怎么突然跑出指针来呢?请博主帮忙解释一下。。。3Q!

sunke9_998892717 2008-11-16 22:38

谢谢楼上的评价!

用户80676 2008-11-14 11:09

我敢说这么多年来我在论坛上看见的高手,你是最无私的。谢谢

用户169165 2008-9-20 12:06

下载了! 多谢共享! 期待更多产品!

sunke9_998892717 2008-8-6 08:02

感谢您的支持!

用户1211758 2008-8-5 10:11

这工作绝对是功在当今,惠及后世。支持您。
相关推荐阅读
小可歌 2016-05-31 13:54
【转帖】模拟电路的四重境界
无意中看到这个文章,虽然自己也搞了4 年模电了,但后看完之后发现自己原来根本就没有入门阿!现发上来和大家共享!·············   复旦攻读微电子专业模拟芯片设计方向研究生开始到...
小可歌 2016-05-28 07:14
发帖庆祝用app inventor的录音机保存MP3格式录音成功!
看似简单的功能,可是把我难够呛,刚学APP INVENTOR没几天,手里的两本书翻来掉去的看了N遍。APP INVENTOR的录音机默认是保存录音文件为3GP格式,我想保存成MP3文件就没有地方找...
小可歌 2016-02-22 08:56
C语言Printf格式,调试最好的助手!
    C中格式字符串的一般形式为: %[标志][输出最小宽度][.精度][长度]类型, 其中方括号[]中的项为...
小可歌 2016-02-19 15:19
对于SRAM的地址线和数据线是可以打乱顺序用的!!!!
因为SRAM的地址具有唯一性,其实数据线也有唯一性。 也就是A0~A18,D0~D15,都是唯一的。 正常是:A0~A18,接FSMC的A0~A18。 D0~D15,接FSMC的D0~D15. 假...
小可歌 2016-02-02 11:29
Linux系统下基本命令
Linux系统下基本命令: 要区分大小写  uname 显示版本信息(同win2K的 ver)  dir 显示当前目录文件,ls -al 显示包括隐藏文件(同win2K的 dir)  pwd...
小可歌 2016-02-02 11:28
DOS命令大全
对于一般的网民来说,dos命令是什么真的不知道,dos命令有些什么作用也不知道。但是黑客们却精通dos命令,经常利用dos命令进行各种任务,以达到自己的目的。下面笔者为大家汇总出dos命令大全,希...
我要评论
7
10
关闭 站长推荐上一条 /2 下一条