OpenEdv-开源电子网

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

蓝牙通信求大牛或者原子哥讲解

[复制链接]

15

主题

106

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
283
金钱
283
注册时间
2014-2-17
在线时间
38 小时
发表于 2014-9-22 17:59:16 | 显示全部楼层 |阅读模式
5金钱

问题一:HC05蓝牙模块,将例程看了一遍。进行HC05初始化HC05_Init()的时候,因为我们在usart.h中有#define USART2_RX_EN 1 所以,使能了串口接收,那么我们在使用DMA进行AT指令传送之前以及之后需要先禁止接收然后再开接收使能么?

问题二://确保一次发送数据不超过USART2_MAX_SEND_LEN字节
void u2_printf(char* fmt,...) 

 va_list ap;//初始化指向可变参数列表的指针,可变参数列表指针是因为这个列表的长度是不定的。
 va_start(ap,fmt);//va_start有个对应的va_end.这个函数是将fmt数组的第一个参数的地址赋给ap,ap指向参数列表开始。
 vsprintf((char*)USART2_TX_BUF,fmt,ap);//将fmt进行转化形成格式化字符串,即可以显示的的字符串,放入数组USART2_TX_BUF数组中
 va_end(ap);
 while(DMA_GetCurrDataCounter(DMA1_Channel7)!=0); //等待通道7传输完成  
 UART_DMA_Enable(DMA1_Channel7,strlen((const char*)USART2_TX_BUF));  //通过dma发送数组USART2_TX_BUF中的可显示字符。
}
这个函数理解得不怎么好,后面的注释是我自己改的,不知道合理不

最佳答案

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

1, 不需要。 2,前面4句话,你完全不用理会,照搬就是了。 后面就是等待DMA传输完成后,启动新一次发送。
花自飘零水自流,生命不息,奋斗不止
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2014-9-22 17:59:17 | 显示全部楼层
1, 不需要。
2,前面4句话,你完全不用理会,照搬就是了。
后面就是等待DMA传输完成后,启动新一次发送。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

15

主题

106

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
283
金钱
283
注册时间
2014-2-17
在线时间
38 小时
 楼主| 发表于 2014-9-22 22:38:33 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
谢谢原子哥
花自飘零水自流,生命不息,奋斗不止
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-22 21:40

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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