如何进入IDLE中断
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何进入IDLE中断相关的知识,希望对你有一定的参考价值。
参考技术A idle时断开:可能1:每个数据库用户会对应一个profile,profile中有一项叫做IDLE_TIME,这项控制最大连续空闲时间,当用户连接空闲时间超过这个限制时就自动断开了。可能2:数据库启用了resourcemanager。资源管理器中有一项叫做max_idle_time,这项控制单个连接的总空闲时间,当用户连接空闲时间超过这个限制时就自动断开了。可能3:数据库启用了resourcemanager。资源管理器中有一项叫做max_idle_blocker_time,这项控制连接处于idle状态且阻塞了其他连接的最大时间,当用户连接处于idle状态且阻塞了其他连接的时间超过这个限制时就自动断开了。运行时断开:可能1:同上,profile或者resourcemanager中对应项限制的用户连接使用的资源总量,当用户执行的程序使用资源总量超过限制时就被断开了。可能2:遇到数据库bug或者第三方软件与oracle的不兼容问题。 参考技术B USART的配置如下USART_InitStructure.USART_BaudRate = 4800;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
USART_InitStructure.USART_StopBits = USART_StopBits_1;
USART_InitStructure.USART_Parity = USART_Parity_No;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
USART_InitStructure.USART_Clock = USART_Clock_Disable;
USART_InitStructure.USART_CPOL = USART_CPOL_Low;
USART_InitStructure.USART_CPHA = USART_CPHA_2Edge;
USART_InitStructure.USART_LastBit = USART_LastBit_Disable;
USART_Init(USART1, &USART_InitStructure);
/*enable the usart1*/
USART_Cmd(USART1, ENABLE);
USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
USART_ITConfig(USART1, USART_IT_IDLE, ENABLE);
STM32进入中断怎么出不了中断
/*实现功能:按键之前D2常亮;
按下INT2键(C13端口,对应EXTI13外部中断线),进入中断程序D2常灭*/
#include "stm32f10x.h"
/*****************************/
void LED_GPIO_Config()
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOG, ENABLE); //开启GPIO_G外设时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14; //板上LED编号 D2 PG14
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //通用推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //设置引脚速率
GPIO_Init(GPIOG, &GPIO_InitStructure); //调用库函数,初始化GPIO_G
GPIO_SetBits(GPIOG,GPIO_Pin_14); //点亮D2
void NVIC_Config(void) //NVIC中断控制器初始化配置
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); //设置中断优先级分组1
NVIC_InitStructure.NVIC_IRQChannel =EXTI15_10_IRQn; //设定中断源为EXTI13
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //中断占优先级为0
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //副优先级为0
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能中断
NVIC_Init(&NVIC_InitStructure);
void EXTI_Config(void) //外部中断配置 PC13
GPIO_InitTypeDef GPIO_InitStructure;
EXTI_InitTypeDef EXTI_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO, ENABLE);
NVIC_Config();
/*EXTI LINE GPIO CONFIG */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13; //C13
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //上拉输入
GPIO_Init(GPIOC, &GPIO_InitStructure);
/*EXTI LINE MODE CONFIG*/
GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource13);
EXTI_InitStructure.EXTI_Line = EXTI_Line13;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; //中断模式为中断模式
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; //下降沿出发
EXTI_InitStructure.EXTI_LineCmd = ENABLE; //使能中断线
EXTI_Init(&EXTI_InitStructure); //根据参数初始化中断寄存器
EXTI15_10_IRQHandler() //外部中断13中断服务函数
if(EXTI_GetITStatus(EXTI_Line13)!=RESET) //进入中断后,调用EXTI_GetITStatus()函数再次检查是否产生了EXTI_Line中断
EXTI_ClearFlag(EXTI_Line13);
GPIO_ResetBits(GPIOG,GPIO_Pin_14); //灭D2
EXTI_ClearITPendingBit(EXTI_Line13); //清除中断标志位再退出中断服务程序
int main()
LED_GPIO_Config();
EXTI_Config();
while(1);
感觉这个用在这里不合适GPIO_ResetBits(GPIOG,GPIO_Pin_14); //灭D2
单步执行,在EXTI_Config那个函数里加断点,然后看看程序跑到哪里了。。。肯定能解决或者按图改下程序、、加个状态变量
追问怎么加断点
追答f9
参考技术A 需要帮你做设计吗 参考技术B 1)我不知道你是怎么用DISABLE开启的。2)请检查中断函数名是否与启动代码中的中断函数名一致。
3)你在中断函数里关时钟做什么用?
4)不要在中断函数里做处理。追问
你说的我一个都没听懂
以上是关于如何进入IDLE中断的主要内容,如果未能解决你的问题,请参考以下文章
STM32外部中断无法进入中断程序,请问下面的程序哪里不对呀???