PC2口进行AD采样。程序编写思路:现将PC2口配置成外部中断的EXIT2,当EXIT2检测到上升沿时进入EXIT2的外部中断服务程序打开定时器5,定时一段时间后,在定时器5的中断服务程序中打开AD采样。
1、main.c中用下面一句话作为开启PC2口作为外部中断EXIT2,可以吗??
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,DISABLE);
2、exti.c中PC2口配置成外部中断 EXTI2
static void EXTI_GPIO_MODE_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;
GPIO_Init(GPIOC,&GPIO_InitStructure);
}
static void EXTI_NVIC_Configuration(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
NVIC_InitStructure.NVIC_IRQChannel = EXTI2_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
static void EXTI_MODE_Config(void)
{
EXTI_InitTypeDef EXTI_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
EXTI_InitStructure.EXTI_Line = EXTI_Line2;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);
}
void EXTI_PC2_Config(void)
{
EXTI_GPIO_MODE_Config();
EXTI_NVIC_Configuration();
GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource2);
EXTI_MODE_Config();
}
3、stm32f10x_it.c程序中
void EXTI2_IRQHandler(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,DISABLE);//禁止外部中断EXTI2
START_TIM5();//打开定时器5
STM32外部中断无法进入中断程序,请问下面的程序哪里不对呀???
答案:2 悬赏:30 手机版
解决时间 2021-02-15 10:08
- 提问者网友:你给我的爱
- 2021-02-14 19:54
最佳答案
- 五星知识达人网友:刀戟声无边
- 2021-02-14 21:20
1)我不知道你是怎么用DISABLE开启的。
2)请检查中断函数名是否与启动代码中的中断函数名一致。
3)你在中断函数里关时钟做什么用?
4)不要在中断函数里做处理。
2)请检查中断函数名是否与启动代码中的中断函数名一致。
3)你在中断函数里关时钟做什么用?
4)不要在中断函数里做处理。
全部回答
- 1楼网友:逐風
- 2021-02-14 22:11
nvic_prioritygroupconfig(nvic_proioritygroup_1);//把应用程序中断复位控制寄存器的10-8位设位1,表示1位抢断优先级,3位表示子优先级
nvic_initstructure.nvic_irqchannelpreemptionpriority = 0;此处只能为0或1,因为1位来表示
nvic_initstructure.nvic_irqchannelsubpriority = 2;此处可以是0-7,因为是3位表示
把tim_irqchanne的抢断优先级设为0,子优先级设为2,数字越小优先级越高,抢断优先级可以打断其他的中断,而子优先级不能
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯