完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我的串口中断是这样写的
void USART1_IRQHandler(void) //串口中断函数 { u8 Res; if(USART_Ge**tatus(USART1, USART_IT_RXNE) != RESET) //接受中断 { USART_ClearITPendingBit(USART1,USART_IT_RXNE); Res =USART_ReceiveData(USART1);//(USART1->DR);//读取接收到的数据 Bluetooth_data=Res; //将接收到的数据 Bluetooth_data } } 主函数关键部分是这样 LED0=0; LED1=0; while(1) { switch(Bluetooth_data) { case 0x01: LED0=!LED0; break; case 0x02: LED1=!LED1; break; case 0x03: LED0=!LED0;LED1=!LED1; break; } } } 当我用手机发送命令的时候,开发板上的LED没有任何 反应。这是为什么呢,是我的中断函数哪出错了吗? |
|
相关推荐
10个回答
|
|
我试了一下 确实能收到数据
|
|
|
|
参考我发的那个智能家居吧
|
|
|
|
void USART1_IRQHandler(void) //串口中断函数
{ u8 Res; if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //接受中断 { USART_ClearITPendingBit(USART1,USART_IT_RXNE); Res =USART_ReceiveData(USART1);//(USART1->DR);//读取接收到的数据 Bluetooth_data=Res; //将接收到的数据 Bluetooth_data printf("get data=%d",Res); } 加打印看看有没有收到数据先呀? } |
|
|
|
|
|
|
|
这是我的设置 应该没错
void uart_init(u32 bound){ //GPIO?????è?? GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO, ENABLE); //USART1_TX  A.9 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOA, &GPIO_InitStructure); //USART1_RX  A.10 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &GPIO_InitStructure); //Usart1 NVIC ???? NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;// NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//IRQ?¨?????? NVIC_Init(&NVIC_InitStructure);//?ù??NVIC_InitStruct?????¨???????????????èNVIC?????÷USART1 //USART ???????è?? USART_InitStructure.USART_BaudRate = bound;//??°??è????9600; 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_Init(USART1, &USART_InitStructure); USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//???????? ?????????????? USART_Cmd(USART1, ENABLE); //?????®?? }蓝牙控制LED.rar (271.72 KB ) |
|
|
|
|
|
|
|
我已经成功打印出来了 就是我发的命令
|
|
|
|
那已经找到问题了吧?
|
|
|
|
没
我上网找了些别人的 代码 和我的也基本 一样 不知道为什么我的不行 我打算换换单片机和蓝牙 看看是不是出问题了 STM32 手机蓝牙控制实例分享-ST MCU - 21ic电子技术论坛 http://bbs.21ic.com/icview-883443-1-1.html |
|
|
|
看看这帖字吧http://openedv.com/posts/list/42377.htm,原理差不多了
重点是这样的协议,你可以做一个类似的switch(p_data[0]) { case 0x31: //开关命令 switch(p_data[1])//判读那个开关 { case 0x32: ////////////////////////////////////led1; if(p_data[2]==0x31)//开 nrf_gpio_pin_clear(2); else if(p_data[2]==0x32) //关 nrf_gpio_pin_set(2); break; case 0x33: //////////////////////////////////led2; if(p_data[2]==0x31)//开 nrf_gpio_pin_clear(4); else if(p_data[2]==0x32) //关 nrf_gpio_pin_set(4); break; case 0x31:////////////////////////////////// //jqc; if(p_data[2]==0x31)//开 nrf_gpio_pin_set(6); else if(p_data[2]==0x32) //关 nrf_gpio_pin_clear(6); break; } break; |
|
|
|
只有小组成员才能发言,加入小组>>
330浏览 1评论
447浏览 1评论
577浏览 1评论
用PSOC6 BLE当外围设备,两者传输数据时,psoc6概率性出现蓝牙挂死的原因?
460浏览 1评论
是否有办法通过CYW20835板的固件发送BLE HCI命令?
431浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 21:54 , Processed in 0.713666 second(s), Total 93, Slave 78 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号