OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2140|回复: 5

蓝牙HC05程序在串口接收死循环

[复制链接]

43

主题

137

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1299
金钱
1299
注册时间
2016-4-21
在线时间
262 小时
发表于 2018-12-6 16:41:49 | 显示全部楼层 |阅读模式
50金钱
用的串口一,波特率9600        while(retry--&&retry>0)
        {
                HC05_KEY=1;                                        //KEYÖøß,½øèëATÄ£ê½
                HAL_Delay(10);
                u1_printf("AT\r\n");                //·¢ËíAT2aêÔÖ¸áî
                HC05_KEY=0;                                        //KEYà-μí,íË3öATÄ£ê½
                for(t=0;t<10;t++)                         //×&#238;3¤μè′y50ms,à′&#189;óê&#213;HC05&#196;£&#191;éμ&#196;&#187;&#216;ó|
                {
                        if(USART1_RX_STA&0X8000)break;
                        HAL_Delay(5);
                }               
                if(USART1_RX_STA&0X8000)        //&#189;óê&#213;μ&#189;ò&#187;′&#206;êy&#190;Yá&#203;
                {
                        temp=USART1_RX_STA&0X7FFF;        //μ&#195;μ&#189;êy&#190;Y3¤&#182;è
                        USART1_RX_STA=0;                         
                        if(temp==4&&USART1_RX_BUF[0]=='O'&&USART1_RX_BUF[1]=='K')
                        {
                                temp=0;//&#189;óê&#213;μ&#189;OK&#207;ìó|
                                break;
                        }
                }                                           
        }       

发送AT指令后,蓝牙模块的灯是快闪,程序是跑死在
void HAL_UART_IRQHandler(UART_HandleTypeDef *huart)
这个函数里了,调试模式里看,一直在这里循环。
但有的时候就成功了,但是retry循环结束为0.
读主从也能读出是主机。

还有一块板子上,模块只会1s闪1s不闪,把key拉低后不是应该进入可配对状态么

最佳答案

查看完整内容[请看2#楼]

第一个是我先进了调试,相当于给key拉高然后才上的电,模块就恢复默认了,调成38400后波特率可行,然后是串口中断开定时器调用 HAL_TIM_Base_Start_IT(&htim3);就可以开启了,原来使用的话__HAL_TIM_ENABLE并没有开始定时器的中断,cube配置完中断都是要自己使能的
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

43

主题

137

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1299
金钱
1299
注册时间
2016-4-21
在线时间
262 小时
 楼主| 发表于 2018-12-6 16:41:50 | 显示全部楼层
正点原子 发表于 2018-12-7 01:47
我们不是有例程么?

第一个是我先进了调试,相当于给key拉高然后才上的电,模块就恢复默认了,调成38400后波特率可行,然后是串口中断开定时器调用 HAL_TIM_Base_Start_IT(&htim3);就可以开启了,原来使用的话__HAL_TIM_ENABLE并没有开始定时器的中断,cube配置完中断都是要自己使能的
回复

使用道具 举报

43

主题

137

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1299
金钱
1299
注册时间
2016-4-21
在线时间
262 小时
 楼主| 发表于 2018-12-6 16:44:20 | 显示全部楼层
if((errorflags != RESET) && (((cr3its & USART_CR3_EIE) != RESET) || ((cr1its & (USART_CR1_RXNEIE | USART_CR1_PEIE)) != RESET)))
一直进这个函数
回复

使用道具 举报

43

主题

137

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1299
金钱
1299
注册时间
2016-4-21
在线时间
262 小时
 楼主| 发表于 2018-12-7 01:33:10 | 显示全部楼层
第一个进串口中断死循环,貌似长时间断电后可以解决,第二个板子的蓝牙模块应该是2s闪一次,相当于我把它重置了么
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2018-12-7 01:47:26 | 显示全部楼层
我们不是有例程么?
回复

使用道具 举报

43

主题

137

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1299
金钱
1299
注册时间
2016-4-21
在线时间
262 小时
 楼主| 发表于 2018-12-7 08:47:36 | 显示全部楼层
正点原子 发表于 2018-12-7 01:47
我们不是有例程么?

就是照着例程来的,但是板子是自己画的,用的cubemx生成的工程
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-22 13:37

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表