完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在ccs下编译lm4f120h5qr时不能正确进入中断服务函数,想要用PF0中断,初始化如下
void KEY_Init(void) [ SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF); GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_0); GPIOIntTypeSet(GPIO_PORTF_BASE, GPIO_PIN_0, GPIO_RISING_EDGE); GPIOPinIntEnable(GPIO_PORTF_BASE, GPIO_PIN_0); IntEnable(INT_GPIOF); IntMasterEnable(); ] 编写的中断服务函数如下: void IntGPIOf(void) [ unsigned long status; status = GPIOPinIntStatus(GPIO_PORTF_BASE, true); GPIOPinIntClear(GPIO_PORTF_BASE, status); if(status & GPIO_PIN_0) [ if(RED_luminance<=6000) [ RED_luminance=RED_luminance+500; RGB_Set(R,RED_luminance); ] else [ RED_luminance=0; RGB_Set(R,RED_luminance); ] ] ] 是中断服务函数的名称有问题吗?应该怎么命名?非常感谢专家能够帮助解答! |
|
相关推荐
4 个讨论
|
|
你好,
你的函数命名应该没有问题,问题应该出在你的初始化上面: 1、楼主是希望用PF0做中断,所以把GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_0); 改为GPIOPinTypeGPIOInput(GPIO_PORTF_BASE, GPIO_PIN_0); 讲PF0配置为输入而不是输出; 2、对于LM4F120来说,PF0脚默认是NMI,所以需要解锁,使其恢复到普通GPIO,具体的配置代码楼主可以参考下面的: void KEY_Init(void) [ SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF); GPIO_PORTF_LOCK_R = 0x4C4F434B;//unlock the GPIOCR register GPIO_PORTF_CR_R |= 0x01;//unlock the PF0 GPIOPinTypeGPIOInput(GPIO_PORTF_BASE, GPIO_PIN_0); GPIOPinIntEnable(GPIO_PORTF_BASE, GPIO_PIN_0); GPIOIntTypeSet(GPIO_PORTF_BASE, GPIO_PIN_0, GPIO_RISING_EDGE); IntEnable(INT_GPIOF); IntMasterEnable(); ] |
|
|
|
|
|
sunguodong 发表于 2018-8-16 07:43 在startup_CCS.C中我的修改如下: // //***************************************************************************** void ResetISR(void); static void NmiSR(void); static void FaultISR(void); static void IntDefaultHandler(void); void GPIO_PORT_F_ISR(void);// 。。。。。。。 IntDefaultHandler, // FLASH Control GPIO_PORT_F_ISR, // GPIO Port F IntDefaultHandler, // GPIO Port G 但是还是进不了中断函数 void GPIO_PORT_F_ISR(void) 整个代码如下: #include "inc/hw_ints.h" #include "inc/hw_memmap.h" #include "inc/hw_types.h" #include "driverlib/sysctl.h" #include "driverlib/interrupt.h" #include "driverlib/gpio.h" void enable_led_port() [ SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF); GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE,GPIO_PIN_1); ] void enable_key_port() [ SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF); GPIOPadConfigSet(GPIO_PORTF_BASE,GPIO_PIN_4,GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_STD_WPU); //GPIOPinTypeGPIOInput(GPIO_PORTF_BASE,GPIO_PIN_4); GPIODirModeSet(GPIO_PORTF_BASE,GPIO_PIN_4,GPIO_DIR_MODE_IN); ] /* void register_key_isr() [ // IntRegister(INT_GPIOF,GPIO_PORT_F_ISR); //GPIOPortIntRegister(GPIO_PORTF_BASE,GPIO_PORT_F_ISR); ] */ void enable_key_interrupt() [ GPIOIntTypeSet(GPIO_PORTF_BASE,GPIO_PIN_4,GPIO_FALLING_EDGE); GPIOPinIntEnable(GPIO_PORTF_BASE,GPIO_PIN_4); IntEnable(INT_GPIOF); IntMasterEnable(); ] void main() [ //// 40 MHz system clock SysCtlClockSet(SYSCTL_SYSDIV_5|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHZ|SYSCTL_OSC_MAIN); enable_led_port(); enable_key_port(); //register_key_isr(); enable_key_interrupt(); while(1); ] void GPIO_PORT_F_ISR(void) [ unsigned char ucVal; unsigned long ulStatus; ulStatus = GPIOPinIntStatus(GPIO_PORTB_BASE, true); // 读取中断状态 GPIOPinIntClear(GPIO_PORTB_BASE, ulStatus); // 清除中断状态,重要 if (ulStatus & GPIO_PIN_4) // 如果KEY的中断状态有效 [ ucVal = GPIOPinRead(GPIO_PORTF_BASE,GPIO_PIN_1); // 翻转LED GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_1, ~ucVal); SysCtlDelay(100000); // 延时约10ms,消除按键抖动 while (GPIOPinRead(GPIO_PORTF_BASE, GPIO_PIN_4) == 0x00); // 等待KEY抬起 SysCtlDelay(100000); // 延时约10ms,消除松键抖动 ] ] |
|
|
|
|
|
cnh24 发表于 2018-8-16 08:12 楼主可以参考一下下面的代码: ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF); ROM_GPIOPinTypeGPIOInput(GPIO_PORTF_BASE, GPIO_PIN_4); ROM_GPIOPinIntEnable(GPIO_PORTF_BASE, GPIO_PIN_4); ROM_GPIOIntTypeSet(GPIO_PORTF_BASE, GPIO_PIN_4, GPIO_FALLING_EDGE); ROM_IntEnable(INT_GPIOF); ROM_IntMasterEnable(); |
|
|
|
|
|
只有小组成员才能发言,加入小组>>
348 浏览 1 评论
543 浏览 2 评论
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
787 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
658 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1140 浏览 1 评论
AT32F407在USART2 DMA发送数据时,接包接到了要发送的数据,程序还是处于等待传输完成的标识判断中,为什么?
77浏览 29评论
264浏览 23评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
261浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
209浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
67浏览 13评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-26 23:26 , Processed in 1.206702 second(s), Total 65, Slave 54 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号