你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

NUCLEO上手之——EXTI:M3和M0的EXTI配置差别

[复制链接]
woshilee 提问时间:2014-12-10 11:30 /
#include "stm32f0xx.h"
unsigned char flag=0;
/* Private function prototypes -----------------------------------------------*/
/* Private functions ---------------------------------------------------------*/
/**
  * @brief  Delay
  * @param  None
  * @retval None
  */
void Delay(unsigned int ncount)
{
  while(ncount--);
}
/**
  * @brief  GPIO Initial
  * @param  None
  * @retval None
  */
void GPIO_Configuration(void)
{
  GPIO_InitTypeDef        GPIO_InitStructure;
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
  GPIO_Init(GPIOC, &GPIO_InitStructure);
       
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
}
/**
  * @brief  EXTI Initial
  * @param  None
  * @retval None
  */
void EXTI_Configuration(void)
{
        EXTI_InitTypeDef        EXTI_InitStructure;
        EXTI_InitStructure.EXTI_Line=EXTI_Line13;
        EXTI_InitStructure.EXTI_LineCmd=ENABLE;
        EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;
        EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;
        EXTI_Init(&EXTI_InitStructure);
        SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOC, EXTI_PinSource13);
}

/**
  * @brief  GPIO Initial
  * @param  None
  * @retval None
  */
void RCC_Configuration(void)
{
        RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC|RCC_AHBPeriph_GPIOA, ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
}
/**
  * @brief  NVIC Initial
  * @param  None
  * @retval None
  */
void NVIC_Configuration(void)
{
        NVIC_InitTypeDef        NVIC_InitStructure;
        NVIC_InitStructure.NVIC_IRQChannel=EXTI4_15_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
        NVIC_InitStructure.NVIC_IRQChannelPriority=1;
        NVIC_Init(&NVIC_InitStructure);
}

/**
  * @brief  Main program.
  * @param  None
  * @retval None
  */
int main(void)
{
                RCC_Configuration();
                GPIO_Configuration();
                NVIC_Configuration();
                EXTI_Configuration();
               while (1);
}
/**
  * @brief  IRQ
  * @param  None
  * @retval None
  */
void EXTI4_15_IRQHandler(void)
{
  if(EXTI_GetITStatus(EXTI_Line13)==1)
        {
        Delay(0xff);
        if(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_13)==0)
        while(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_13)==0);
        GPIOA->ODR ^= GPIO_Pin_5;
  EXTI_ClearFlag(EXTI_Line13);
        }
}       
红色部分是M0和M3不同的部分:
M3中这样配置:GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0|GPIO_PinSource1);
M0用到l了SYSCFG,就要开启它的时钟


收藏 评论17 发布时间:2014-12-10 11:30

举报

17个回答
巅峰残狼 回答时间:2014-12-10 13:09:00
谢谢分享,确实是不同的地方
woshilee 回答时间:2014-12-10 14:05:03
巅峰残狼 发表于 2014-12-10 13:09
谢谢分享,确实是不同的地方

独乐乐不如众乐乐!
xnmc2013 回答时间:2015-1-10 23:30:14
感谢~~~~~~~~~~~~~
万里-363223 回答时间:2015-1-11 08:49:35
M0和M3是有些不同的地方,但基本框架相同
我是酱油哥 回答时间:2015-1-11 08:59:14
感谢 分享 啊
kevin0129 回答时间:2015-1-11 10:04:25
M4中也采用了这种方式,这是ST改进的地方吧!
xnmc2013 回答时间:2015-1-25 15:02:22
为什么F1里面的NVIC的优先级组配置在F0里面没有了呢???NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
难道F0里面不需要配置?
另外好像没有了次占优先级的设置,这个应该是最主要的区别吧
chendiand 回答时间:2015-1-31 19:06:11
谢谢分享
ataudio 回答时间:2015-1-31 21:32:47
M4也用到了这个,存在这个差别。用 | 同时配置两个中断管脚,不能正常。
12下一页

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版