完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
rf射频数据收发芯片的一个数据接收指示引脚连接stm32的一个gpio口,设置为中断口。当rf接收到数据的时候,数据接收指示引脚由高电平变为低电平,所以中断配置里面配置的是IPU,下降沿触发。系统复位后,发送模块没有发送数据,也就是说这个接收模块没有接收到数据,这个中断口根本不会触发立马。可是实际上是一旦复位,在线调试发现k=100,说明进入中断服务函数,不得其解,大佬帮忙看看是不是配置错误呢。中断代码如下:
#include "wakeup_interrupt.h" extern uint8_t Signalll; uint8_t g_RF24L01RxBuffer[ 32 ] = { 0 }; uint32_t t=0,i = 0,n=0,k=0; const char *g_changeok = "changeok"; const char *g_wakingup = "wakingup"; void wakeup_interrupt_Configuration(void) { GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12; GPIO_Init(GPIOA, &GPIO_InitStructure); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO,ENABLE); GPIO_EXTILineConfig(GPIO_PortSourceGPIOA , GPIO_PinSource12); } //*****外部事件的配置函数 void EXTI_Configuration(void) { EXTI_InitTypeDef EXTI_InitStructure; /*PA12外部中断输入*/ EXTI_InitStructure.EXTI_Line = EXTI_Line12; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); } //*********中断配置函数 void NVIC_Configuration(void) { NVIC_InitTypeDef NVIC_InitStructure; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); /*外部中断线*/ NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn ; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0 ; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE ; NVIC_Init(&NVIC_InitStructure); } //**********中断服务函数 void EXTI15_10_IRQHandler(void) { k=100; if(EXTI_GetITStatus(EXTI_Line12)!= RESET) { EXTI_ClearITPendingBit(EXTI_Line12); Signalll = 50; i = CC1101_Rx_Packet( g_RF24L01RxBuffer ); //此程序里面包含了打开spi模式 if((g_RF24L01RxBuffer[0])!=0) { drv_uart_tx_bytes(g_RF24L01RxBuffer, 32 ); } if(memcmp(g_wakingup,g_RF24L01RxBuffer,8) == 0)//判断接收到的字符串 { drv_uart_tx_bytes("recieved waking up command", 26 ); t=10; CC1101_Set_Idle_Mode( ); n=1; while(1) { CC1101_Tx_Packet( (uint8_t *)g_changeok, 8 , ADDRESS_CHECK ); t=2; //输出发送的数据到串口显示器 drv_delay_500Ms( 1 ); drv_delay_500Ms( 1 ); } } } } 除此之外,主程序里面的灯不闪烁,貌似是被直接中断了,下面是部分main程序: int main( void ) { //串口初始化,设置波特率 drv_uart_init( 115200 ); //延时初始化 drv_delay_init( ); //LED初始化 drv_led_init( ); //SPI初始化 drv_spi_init( ); //CC1101初始化 CC1101_Init( ); //唤醒时中断的相关配置 wakeup_interrupt_Configuration(); NVIC_Configuration(); EXTI_Configuration(); for(a=0;a<6;a++)//红灯绿灯分别亮灭3次代表初始化成功,处于发送或接收状态 { led_red_flashing( ); led_green_flashing( ); drv_delay_500Ms( 1 ); } 系统复位时,理论上程序从头到尾运行,然而上面的红灯绿灯没有闪烁。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1632 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1559 浏览 1 评论
985 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
688 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1605 浏览 2 评论
1869浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
655浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
525浏览 3评论
540浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
512浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 22:04 , Processed in 0.843558 second(s), Total 78, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号