完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
初学STM32,还往大家多多指教 GPIOC->CRL&=0XFF0FFFFF;// PC5输入 GPIOC->IDR|=0<<5; //PC5默认下拉 |
|
相关推荐
23个回答
|
|
谢谢发烧友的提示,上面有一个地方我弄错了,NRF接收的IRQ是置低为enable,于是我修改了一个地方
GPIOC->IDR|=1<<5; //PC5默认上拉 另外NRF的config为 NRF24L01_Write_Reg(WRITE_REG+CONFIG, 0x0f); bit 4,5,6 均为0, 根据NRF的说明书,as active low interrupt on IRQ pin,所以我的理解是这样就已经开了接收中断了,但是实验后仍然无法进入中断,麻烦再给一点提示呢 |
|
|
|
外设IO中断可以设成 上升沿有效,下降沿有效,高电平有效,底电平有效,电平变化有效的.那个适合就用那个吧.
NRF24L01_Write_Reg(WRITE_REG+CONFIG, 0x0f); 这是设成接收模式,RX_RD中断产生时IRQ引脚为低.你应将中断设成下降沿有效或低电平有效. |
|
|
|
不好意思我设置了下降沿有效的,忘了把代码贴上来:
void EXTIX_Init(void) { GPIOC->CRL&=0XFF0FFFFF;// C5输入 GPIOC->CRL|=0X00800000; //上拉/下拉输入模式 GPIOC->IDR|=1<<5; //PC5默认上拉 Ex_NVIC_Config(GPIO_C,5,FTIR); //由上升沿改为下降沿沿触发 MY_NVIC_Init(2,2,EXTI0_IRQChannel,2); //抢占2,子优先级2,组2 } |
|
|
|
|
|
|
|
当发送端开始发送时我通过对PCin(5)的读取成功读到了IRQ从1变成0,这只能说明PC5的中断没有打开,我怀疑是IRQ CHannel的设置问题,我用EXTI0_IRQChannel和EXTI15_10_IRQChannel均无法进入中断,请问对于PC5来讲究竟应该用哪个IRQChannel呢,这个问题一直不明白 |
|
|
|
EXTI9_5_IRQHandler
|
|
|
|
楼上正解.
|
|
|
|
非常感谢两位,等我把这块全部弄懂后把我走的弯路贴上来,帮助更多的新人
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
楼主能把代码上吗?谢谢了!
|
|
|
|
楼主改好没,帮助一下新人
|
|
|
|
楼主,你好!我也遇到这样的问题,作为接收端时无法进入外部中断,我的板子对应的NRF24L01的IRQ引脚为PC4,那么外部中断的话应该就是EXTI4_IRQn吧!不知是什么原因?高手帮忙看下,谢谢!
[C] 纯文本查看 复制代码 /*配置SPI_NRF_SPI的SCK,MISO,MOSI引脚,GPIOA^5,GPIOA^6,GPIOA^7 */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOA, &GPIO_InitStructure); /*配置SPI_NRF_SPI的CE引脚, PG^8和SPI_NRF_SPI的CSN 引脚,PG^15*/ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_15; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOG, &GPIO_InitStructure);/*配置SPI_NRF_SPI的IRQ引脚,PC^4*/ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU ; GPIO_Init(GPIOC, &GPIO_InitStructure); GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource4); //NRF24L01 IRQ PC4 EXTI_InitStructure.EXTI_Line = EXTI_Line4; //NRF24L01 IRQ PC4 EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; //EXTI外部中断 EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; //下降沿触发 EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure);下面是中断处理程序void EXTI4_IRQHandler(void){ u8 i = 0; u8 status; if(EXTI_GetITStatus(EXTI_Line4) != RESET) { if(NRF_Read_IRQ()==0) { status = SPI_NRF_ReadReg(NRF_READ_REG+STATUS); if(status&RX_DR) { SPI_NRF_ReadBuf(RD_RX_PLOAD,RxBufferRF,RX_PLOAD_WIDTH); for(i=0;i<32;i++) { TxBufferUSART = RxBufferRF; } rf_rec_flag=1; SPI_NRF_WriteReg(FLUSH_RX,NOP); } else if((status &MAX_RT)>0) { SPI_NRF_WriteReg(FLUSH_TX,0); NRF_RX_Mode(); } else if((status &TX_DS)>0) { //·¢éäoóêÕμ½ó|′e SPI_NRF_WriteReg(FLUSH_TX,0); NRF_RX_Mode(); } SPI_NRF_WriteReg(NRF_READ_REG+STATUS, status); } } EXTI_ClearITPendingBit(EXTI_Line4); }} |
|
|
|
我的也是无法进入IRQ中断,搞了好久都不行,到底为什么?
|
|
|
|
我到现在为止就没看见有人用中断接收成功过,此贴坚决不能沉!!
|
|
|
|
用示波器测得明显引脚是有中断信号的,但就算用了上升沿和下降沿同时触发,也还是没用
|
|
|
|
我用 EXTI_GenerateSWInterrupt(EXTI_Line4);测试了,可以进入中断,每次都要把接收端复位一下才能收到数据,但是屏蔽后就不行了,不知道究竟是什么原因?仔细核对过配置的相关GPIO,也开启了AFIO等等,就是没法进入中断
|
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
如何使用STM32+nrf24l01架构把有线USB设备无线化?
2543 浏览 7 评论
请问能利用51单片机和nRF24L01模块实现实时语音无线传输吗?
2331 浏览 5 评论
3156 浏览 3 评论
2801 浏览 8 评论
为什么ucosii上移植lwip后系统进入了HardFault_Handler?
2759 浏览 4 评论
请教各位大咖:有没有接收频率32M左右的芯片推荐的?先感谢啦!
608浏览 1评论
853浏览 0评论
966浏览 0评论
620浏览 0评论
447浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 16:52 , Processed in 1.308853 second(s), Total 115, Slave 97 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号