专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
中断设置问题
2019-03-24 12:58
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
TI MCU
4598
5
1544
今天在程序中添加了IO口下降沿中断,本来以为很easy的事情,发现缺出现了问题,设置为下降沿时,下降沿和上升沿都会触发中断,改为上升沿触发中断,也是两个边沿信号都会触发中断,大家有没有遇见过这种问题,讨论一下啦,
此帖出自
小平头技术问答
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
5条回答
cuizhihao
2019-03-25 02:19
/*
---------------------------------------------------------------
函数功能:旋钮编码器管脚初始化
---------------------------------------------------------------
*/
void EncoderInit(void)
{
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
GPIOPinTypeGPIOInput(GPIO_PORTA_BASE, GPIO_PIN_2 | GPIO_PIN_3);
GPIOIntTypeSet(GPIO_PORTA_BASE, GPIO_PIN_2, GPIO_FALLING_EDGE);
GPIOPinIntEnable(GPIO_PORTA_BASE, GPIO_PIN_2);
IntEnable(INT_GPIOA);
IntMasterEnable();
//优先级设置
IntPrioritySet(INT_UART0, 0 << 5); //SSI组优先级为0
IntPrioritySet(INT_TIMER0A, 1 << 5);
IntPrioritySet(INT_GPIOA, 2 << 5);
IntPrioritySet(INT_TIMER1A, 3 << 5);
IntPriorityGroupingSet(3);
}
/*--------------------------------------------------------------------
函数功能: GPIOA的中断服务函数
--------------------------------------------------------------------*/
void GPIO_Port_A_ISR(void)
{
unsigned long ulStatus;
ulStatus = GPIOPinIntStatus(GPIO_PORTA_BASE, true); //读取中断状态
GPIOPinIntClear(GPIO_PORTA_BASE, ulStatus); //清除中断状态,重要
if (ulStatus & GPIO_PIN_2)
{
if (GPIOPinRead(GPIO_PORTA_BASE, GPIO_PIN_3)==0) //CS_SW1+
{
WriteCpld1(0x6001);
UARTCharPut(UART1_BASE, 0xAA);
}
else //CS_SW1- (GPIO_PIN_3 PA3)
{
WriteCpld1(0x6010);
UARTCharPut(UART1_BASE, 0x55);
}
}
}
代码贴上……求围观!
加载中...
查看其它5个回答
一周热门
更多
>
相关问题
相关文章
×
关闭
采纳回答
向帮助了您的知道网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
×
付费偷看金额在0.1-10元之间
确定
×
关闭
您已邀请
0
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
---------------------------------------------------------------
函数功能:旋钮编码器管脚初始化
---------------------------------------------------------------
*/
void EncoderInit(void)
{
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
GPIOPinTypeGPIOInput(GPIO_PORTA_BASE, GPIO_PIN_2 | GPIO_PIN_3);
GPIOIntTypeSet(GPIO_PORTA_BASE, GPIO_PIN_2, GPIO_FALLING_EDGE);
GPIOPinIntEnable(GPIO_PORTA_BASE, GPIO_PIN_2);
IntEnable(INT_GPIOA);
IntMasterEnable();
//优先级设置
IntPrioritySet(INT_UART0, 0 << 5); //SSI组优先级为0
IntPrioritySet(INT_TIMER0A, 1 << 5);
IntPrioritySet(INT_GPIOA, 2 << 5);
IntPrioritySet(INT_TIMER1A, 3 << 5);
IntPriorityGroupingSet(3);
}
/*--------------------------------------------------------------------
函数功能: GPIOA的中断服务函数
--------------------------------------------------------------------*/
void GPIO_Port_A_ISR(void)
{
unsigned long ulStatus;
ulStatus = GPIOPinIntStatus(GPIO_PORTA_BASE, true); //读取中断状态
GPIOPinIntClear(GPIO_PORTA_BASE, ulStatus); //清除中断状态,重要
if (ulStatus & GPIO_PIN_2)
{
if (GPIOPinRead(GPIO_PORTA_BASE, GPIO_PIN_3)==0) //CS_SW1+
{
WriteCpld1(0x6001);
UARTCharPut(UART1_BASE, 0xAA);
}
else //CS_SW1- (GPIO_PIN_3 PA3)
{
WriteCpld1(0x6010);
UARTCharPut(UART1_BASE, 0x55);
}
}
}
代码贴上……求围观!
一周热门 更多>