|
 |  | | | | 第8期开了吗,hin期待楼主的大作  看电影的时候就hin喜欢傻强,实力抢镜杠杠的,hin搞笑! |
|
|
 |  | | | | 现在的人工智能语音识别技术在这方面有几个方案:
1,基于传统的固定关键字的识别技术
传统的固定关键字识别技术是需要程序预先预设置需要识别的关键字或者语句进行识别,这样可以需要修改程序中的关键字语句才能识别其他的语句,而且 现在固定关键字识别在识别关键字数量以及识别指令的层次上也有限制,代表是基于ld3320芯片的识别模块。
2,基于云平台的关键字识别技术
在语音采集和压缩上在本地进行处理,但是最终的识别算法在云端服务器进行处理识别再通过网络回传给本地模块进行指令操作或者语音对话,这个就像《最强大脑》中的小度机器人一样,其背后是一个强大的计算机服务,以及一个强大的开发团队,,,
代表作有,百度的DuerOS,还有科大讯飞。
本次DIY由于对固定关键字的识别技术模块有一定的使用经验,   但是想尝试基于云平台的应用,可以选择百度的DuerOs或者科大讯飞的平台  ,不知道那个大咖有使用过,可以给个建议,小弟先行谢过   。。。
|
|
|
|  |  | nc965- 积分:103435
- |
- 主题:115
- |
- 帖子:29706
积分:103435 版主 | | | | 顺丰的信息收录专用手机,可听懂四川话,甚至四川的方言,感觉很神奇,是啥系统?
|
|
|
| |  |  | | | | | | 都是基于linux系统,能听懂地方方言,里面可能是应用语音识别芯片,
|
|
|
|
|
|
|
 |  | nc965- 积分:103435
- |
- 主题:115
- |
- 帖子:29706
积分:103435 版主 | | | |
|
|
|
|
|
|  |  | | | | | 考虑的经费问题,使用网络上的玩具机器人进行改装DIY,大概25-30cm高吧。初步计划是这个,还的看里面的空间怎么样。。已经入手小机器人了,到货了发出来和大家见个面。。。
|
|
|
| |  |  | | | | | | 小机器人到位,今天试了一下,还行,下面的图,就是机器人内部空间有点小,大家有没有好的推荐,找个大些的机器人???
眼睛还会闪哦,
走起路来又摇又摆,
|
|
|
|
| | | |  |  | | | | | | | | 你qq是多少,21电源网的很多个qq,你留个qq给我吧,
|
|
|
|
|
|
 |  | | | | 周末看《银河系漫游指南》里面也有一个得了抑郁症的机器人,感觉很好玩,期待楼主的作品
|
|
|
|
|
|
|
|
|
|
| | | | |  |  | | | | | | | | | R01语音智能开发板可以通过wifi连接duerOS,我们只需要使用AT指令就可以轻松配置完成,配置完了就可以直接输入语音进行人机交互或者命令咯,,,,
最近还在折腾这个玩儿,
R01开发板是基于Mbed系统开发的,以前都没有接触过这个系统,所以还是有点吃力的,
先发一个使用AT指令连接dueros的使用截图吧,,,,
通过简单的指令就可以连接wifi,启动dueros连接,修改音量,退出dueros连接等操作,,,,,
后更新待续。。。。。。。
|
|
|
|
|
|
| | | | | | |  |  | | | | | | | | | | | 还不错,就是使用mbed系统开发的,还得熟悉这个os才可以进行二次开发,,, |
|
|
| | | | | | | |  |  | | | | | | | | | | | | 开发倒不是太难,百度那有详细的例程,用python开发的,先把这个语言熟悉一下
|
|
|
|
| | | | | | | |  |  | | | | | | | | | | | | 我看你这个是用AT指令操作的,这个模块找不到,私信给我,我也玩玩,
|
|
|
|
| | | |  |  | | | | | | | | 这是我的QQ号,1498486896,麻烦把购买的链接发一下呗,
|
|
|
|
 |  | | | |
最近把买回来的小机器人拆了看看里面有什么可以进行改造的,进行我的大脑的DIY了,,,先看看下面的机器人,是一个锂电池和主板。
看头上还有一大把电路线,应该是上面控制LED灯的。。。
把头部分才开里面的线路就出来了,,,是一个PCB板载着LED灯阵。3X3 还有两部分,,,作为两个眼睛,上面还有一个喇叭,以及一个红外接收头、、、
看看主板,一个牛屎封装的mcu,一个电机驱动芯片,ma1208,还有一片4Mbit的flash,还有一个锂电池充电芯片。。。。。。。
外部是各种接头
看看头部,,,,
这就是3X3 灯阵,机器人的两个眼睛,,,,,,,
这个就是灯阵的信号,排序以及正负极接线方式。。
接下来就是准备自己做主控板了,原理图接着就更新,,,,,,期待一下。。。。
|
|
|
|
|
|
|
|
|
|
|
|
| |  |  | | | | | | 原理图整个压缩包呗,看不清楚啊,百度dueros平台能共享一下吗嘛?上传个压缩包文档,方便查看和学习,
|
|
|
| | |  |  | | | | | | | 原理图是基于我现在买的小孩玩的玩具机器人的做的控制板,参考价值不是很大,上去传上去也可以的,
见下图
机器人原理图.pdf
(98.89 KB, 下载次数: 75)
|
|
|
|
|
|
|
|
| | | | | |  |  | | | | | | | | | | 我也是大概了解一下这个,不是太懂,期待您的后续更新
|
|
|
|
| | | | |  |  | | | | | | | | |
最近忙了很久,DuerOS可能没时间去做,去摸索了,现在先更新PCB吧,昨天已经发出去制版了,
上图

上图 
上图 
PCB的整体视图
PCB正面图
正面的布局图
PCB背面图
PCB的背面布局图
今天开始调试测试程序,希望在最后的几天可以赶上做出一个完整的作品,
期待各位网友的关注哦,
期间有什么问题都可以给我发帖,我晚上才可以回复,,,,
|
|
|
| | | | | |  |  | | | | | | | | | | 最后这几天为了最终完成作品,可能需要进行方案修改一下了,
原计划是基于云端的语音识别,也就是基于DuerOS系统的语音识别的机器人傻强的DIY,但是DuerOS网上资源确实不多,而且还得上班活口,时间不是很多,现在发现基于DuerOS的计划可能要放弃了,但是DuerOS的探索还会继续,这是今天在公司摸索的一个功能,手机客户端控制的一个数据点(DuerOS云端服务器与本地终端的数据交换称为数据点)。
见图,
见图,
见图,
手机端的模拟设备,进行wifi连接,控制网页上的应用,
通过+/-进行改变数值
下面是电脑网页上的显示数据点数据,这个是通过手机端的数字修改,二显示出来
//////////////////////////////////////////////////////////////////分割线/////////////////////////////////////////////////////////////////
DuerOS的更新到这里了,接下来就没时间折腾DuerOS了,一个小白入门没人带还真不容易啊
¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥
以下我是修改方案为基于LD3220+无线通信的控制方式,结合上一楼中的控制板STM32F103+音乐播放模块进行设计,LD3220进行语言识别,STM32F103与语言模块进行控制电机,灯光,以及语言回答的控制。。。。。
语言合成使用合成软件,但是找了很久都没有合适的 四川话男声,只能勉强使用女声了。
为了傻强的语录,昨晚硬生生还把《澳门风云2》看了一遍。。。。。
整理了一下,见图片
明天开始调试程序,语音模块还在路上,等一下吧,
  
各位大神们期待吧,,,,, 
|
|
|
| | | | | | |  |  | | | | | | | | | | | 度秘需要搭载DuerOS的人工智能系统才可以玩转,这个离线识别的方案就不错 |
|
|
|
| | | | | | | |  |  | | | | | | | | | | | | DuerOS的轻型智能家居验证还要寄实物回去验证了才可以发布使用,很耗时间啊。。。
|
|
|
|
|
|
|
|
| | | | | | | |  |  | | | | | | | | | | | | 昨晚把mp3播放功能调试完了,由于太晚了还没更新。今晚更新上去。。。 |
|
|
| | | | | | | | |  |  | | | | | | | | | | | | | 昨晚测试了MP3播放模块的功能,该模块只需要使用串口进行控制就可以进行歌曲播放,指定曲目播放,上下一曲,播放,暂停等功能,十分合适DIY制作,简单而又不失乐趣。。。。 先上图
上图
上图
管脚说明
以下是指令说明以及使用方法。
最后附上一部分代码:
/*********************************************************************************
*函数命名: void MY169012P_Init(void)
*初始化MY169012P
**********************************************************************************/
void MY169012P_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); //ʹÄÜ PORTA,PORTEʱÖÓ
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;//GPIOB.3
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //ÏÂÀÊäÈë
GPIO_Init(GPIOB, &GPIO_InitStructure); //³õʼ»¯GPIOB3
send_4dat_cmd(0x35,0x01); //SD播放
delay_ms(25);
send_4dat_cmd(0x38,0x01); //busy输出为高
delay_ms(25);
send_4dat_cmd(0x31,0x0a); //音量设置为10(范围0-30)
delay_ms(25);
send_5dat_cmd(0x41,0x00,0x00); //指定歌曲播放曲目0000
delay_ms(25);
send_3dat_cmd(0x11); //播放
// while(BUSY);
delay_ms(10000);
send_3dat_cmd(0x1E); //停止
}
视频还在审核中,等待更新吧,,,,
|
|
|
| | | | | | | | | |  |  | | | | | | | | | | | | | | 继续更新
语音识别部分。
由于以前有使用过这个代码,所以修改起来还是比较快的,但是要一个一个代码自己敲进去也挺耗时间的,,,
不多说,看图,看视频
通过软件设定一定的值,对应不同的指令,当然这也指令也就固定下来了,只能识别设置的指令,其他指令识别不了。见下图
在测试前,先打印出来方便测试使用,一下就是能识别到的指令,也就是我们这次傻强的所有功能的定义,有队话(4-10),也有指令控制操作,包含放歌,跳舞,讲笑话等
下面是测试的截图,
随机挑选的测试指令
当然也有时候会识别错误的,(和你设置的关键词相似程度,你说话的标准是否,别湖念成福就行了)但是大多时候都可以识别出来你的指令,,,,
测试视频由雪花在下面发布
|
|
|
|
|
|
| | | | | | | | | | | | | |  |  | | | | | | | | | | | | | | | | | | 这两天有些忙,都没空更新上去,,,,
PCB板回来了,还焊接了一块,和原来机器人上面得板卡一样的结构
上图吧
最左边是机器人原来的板卡,中间是焊接好的PCB板,右边是空的PCB板
安装过一次,可以安装进去,,,
接下来就是调试程序了,,,,,
昨天出去参加英飞凌的DIY颁奖活动,还听了个技术沙龙,收获颇丰啊,,,
今天开始调试了一下整个系统的对话和指令识别情况,整个流程很不错,
看看一下测试时候打印的信息,,
以下是主程序的部分截图以及关键调用
测试过程太长了,就不发图了,直接看视频吧。。。。
视频在下一楼,等审核通过,,,
|
|
|
|
| | | | | | | | | | | | | | | |  |  | | | | | | | | | | | | | | | | | | | | 测试过程中优化了部分语音结构,下面是最新的语音控制流程,
结合视频一起看就更加方便了解了。。。。。
|
|
|
|
|
| |  |  | | | | | | 一个小锂电池,看唱歌和跳舞的占用时间,正常在两到三个小时左右吧,,,
|
|
|
|
|  |  | | | | | 继续分享
今晚的制作过程,
DIY就是需要折腾,
折腾就需要进行自己的思路以及动手去把自己喜欢的东西做出来,
先上图吧。
下班回来,吃过饭,就先把主板安装上去,但是发现,线缆太多,而且语言识别模块没有地方可以放下的,只能是外置了,考虑这里,只能先把连接语言模块的线缆冲机器人的正面出去,其他的MP3模块只能委屈安装在肚子里面了,
说干就干,把线缆和MP3模块都收到肚子里,但是机器人后背还有一个原来带的电池,
考虑到MP3模块的高度,和后面的电池有干涉,果断去掉电池,
这是原来机器人带有的电池,就在机器人背面,,但是和MP3模块干涉了。。。。
果断除掉,供电在外部使用小米充电宝供电吧。。。。。
细看肚子里的东西满满的一肚子线缆和模块,还有喇叭已经放到头上去了,只是没有拍照而已。。
安装接好线,先别急着拧螺丝,上电测试是不是正常,
躺着的全图
测试通过,接线没有问题,封上后盖,准备和大伙见面咯,,   
大家好,我叫傻强,有啥子需要我都可以满足各位,(#^.^#)
来个背后的语音识别,暂时没有东西,过两天有空了,DIY一个小背包,让傻强背上,把语音识别模块放到里面去
头部眼睛的特写,(由于程序是流水式刷新的之抓拍到部分,看视频会有动感)
我是傻强,来自feiyangziwo DIY制作。
看了图,大伙都会问怎么控制的,这里大概画了一下,手写的有点难看。。。。。大家可以参考一下。。。。
(视频还在上传中,请耐心等待)
|
|
|
|
| | |  |  | | | | | | | 以后餐厅的座椅上会不会用这个 和顾客说话,陪着吃饭聊天哈
,,小朋友们估计也会喜欢,,,
|
|
|
| | | |  |  | | | | | | | | 有人投资 做产品还是可以的,可以陪着小孩玩,我本来打算比赛完了,拿回家哄我家两个外甥女开心呢  ,。哈哈哈
|
|
|
|
|
| | | |  |  | | | | | | | | 我整理一下,到时候发出来玩玩,但是业余的,很难看懂哦,哈哈哈
|
|
|
|
|
|
|
| | | | | |  |  | | | | | | | | | |
识别模块函数,识别模块的图见下
- #include "main.h"
- #include "delay.h"
- #include "usart.h"
- #include "usart3.h"
- #include "ld3320.h"
- #include "asr.h"
- #include "led.h"
- #include "my169012p.h"
- u8 trigger_flag=0; //0 表示没有识别触发口令 1 表示识别了触发口令
- uint8_t Tx_Buffer[2] = {0x00,0xa1};
- uint8_t j;
- uint8_t i;
- int main(void)
- {
- u8 nAsrRes=0; //记录识别码
- u8 flag1=0;
- u8 flag2=0;
-
-
- delay_init(); //延时函数初始化
- Usart1_init(9600); //串口1初始化为9600
- Usart3_init(9600); //串口1初始化为9600
-
- // MY169012P_Init(); //初始化MP3 模块MY1690 播放开机音乐
- LD3320_Init(); //初始化LD3320
- LED_Init(); //初始化LED
- // send_3dat_cmd(0x11); //播放
- // delay_ms(10000);
- // while(BUSY);
- // diver_Init(); //初始化电机驱动
-
- printf("实验开始\r\n");
- delay_ms(1);
- printf("触发口令01:傻强\r\n");
- delay_ms(1);
- printf("一级口令02:在吗\r\n");
- delay_ms(1);
- printf("一级口令03:退下吧\r\n");
- delay_ms(1);
-
- printf("二级口令04:死哪去啦\r\n");
- delay_ms(1);
- printf("二级口令05:有贵宾当然先问贵宾啊\r\n");
- delay_ms(1);
- printf("二级口令06:叫小马哥\r\n");
- delay_ms(1);
- printf("二级口令07:这是我的管家傻强\r\n");
- delay_ms(1);
- printf("二级口令08:咖啡\r\n");
- delay_ms(1);
- printf("二级口令09:你在干嘛\r\n");
- delay_ms(1);
- printf("二级口令10:机器人还会冷啊\r\n");
- delay_ms(1);
- printf("二级口令11:唱首歌吧\r\n");
- delay_ms(1);
- printf("二级口令12:上一曲\r\n");
- delay_ms(1);
- printf("二级口令13:下一首\r\n");
- delay_ms(1);
- printf("二级口令14:跳个舞吧\r\n");
- delay_ms(1);
- printf("二级口令15:说个笑话\r\n");
- delay_ms(1);
- printf("二级口令16:安静\r\n");
- delay_ms(1);
-
- nAsrStatus = LD_ASR_NONE; // 初始状态:没有在作ASR
-
- while(1)
- {
- Tx_Buffer[1]=0xa1; //每次进入语音识别后都修改Tx_Buffer[1]等待串口收发数据0xaa(本体语音播放或者动作完成)
- switch(nAsrStatus)
- {
- case LD_ASR_RUNING:
- break;
-
- case LD_ASR_ERROR: printf("ASR_ERROR\r\n");
- break;
-
- case LD_ASR_NONE: nAsrStatus=LD_ASR_RUNING; //启动一次ASR识别流程:ASR初始化,ASR添加关键词语,启动ASR运算
- if(RunASR()==0)
- {
- nAsrStatus = LD_ASR_ERROR;
- }
-
- break;
- case LD_ASR_FOUNDOK: nAsrRes = LD_ReadReg(0xc5); //一次ASR识别成功结束,取ASR识别结果
- switch(nAsrRes)
- {
- case CODE_SQ:
- printf("触发口令01:傻强\r\n");
- trigger_flag=1; //trigger_flag=1,表示识别了触发口令,接下来要识别普通口令
- LED_D1=0;
- USART_SendData( USART3, 0x01);
- while(Tx_Buffer[1]!=0xaa); //语音指令发出去后等待完成标志0xaa
- printf("发送口令01完毕^_^ \r\n");
- break;
-
- case CODE_ZM: //打开进入第一级命令 在吗?
- if(trigger_flag)
- {
- printf("一级口令02:在吗\r\n");
- LED_D2=0;
- LED_D1=1;
- flag1 =1;
- USART_SendData( USART3, 0x02);
- while(Tx_Buffer[1]!=0xaa);
- printf("发送口令02完毕^_^ \r\n");
- }
- break;
-
- /***********************************************进入第二级命令 *************************************************/
-
- case CODE_SQNL: //进入第二级命令 死去哪里了 04
- if(flag1==1)
- {
- flag2=1;
- printf("二级口令04:死哪去啦\r\n");
- USART_SendData( USART3, 0x04);
- while(Tx_Buffer[1]!=0xaa);
- // Specific_Player (0x41,0x00,0x04);
- printf("发送口令04完毕^_^ \r\n");
- }
- break;
-
- case CODE_WGB: //进入第二级命令 有贵宾当然先问贵宾啊 05
- if(flag1==1)
- {
- flag2=1;
- printf("二级口令05:有贵宾当然先问贵宾啊\r\n");
- USART_SendData( USART3, 0x05);
- while(Tx_Buffer[1]!=0xaa);
- // Specific_Player (0x41,0x00,0x05);
- printf("发送口令05完毕^_^ \r\n");
- }
- break;
- case CODE_JXMG: //进入第二级命令 叫小马哥 06
- if(flag1==1)
- {
- flag2=1;
- printf("二级口令06:叫小马哥\r\n");
- USART_SendData( USART3, 0x06);
- while(Tx_Buffer[1]!=0xaa);
- // Specific_Player (0x41,0x00,0x06);
- printf("发送口令06完毕^_^ \r\n");
- }
- break;
- case CODE_GJSQ: //进入第二级命令 这是我的管家傻强 07
- if(flag1==1)
- {
- flag2=1;
- printf("二级口令07:这是我的管家傻强\r\n");
- USART_SendData( USART3, 0x07);
- while(Tx_Buffer[1]!=0xaa);
- // Specific_Player (0x41,0x00,0x05);
- printf("发送口令07完毕^_^ \r\n");
- }
- break;
- case CODE_KF: //进入第二级命令 咖啡 08
- if(flag1==1)
- {
- flag2=1;
- printf("二级口令08:咖啡\r\n");
- USART_SendData( USART3, 0x08);
- while(Tx_Buffer[1]!=0xaa);
- // Specific_Player (0x41,0x00,0x08);
- printf("发送口令08完毕^_^ \r\n");
- }
- break;
- case CODE_GM: //进入第二级命令 你在干嘛 09
- if(flag1==1)
- {
- flag2=1;
- printf("二级口令09:你在干嘛\r\n");
- USART_SendData( USART3, 0x09);
- while(Tx_Buffer[1]!=0xaa);
- // Specific_Player (0x41,0x00,0x09);
- printf("发送口令09完毕^_^ \r\n");
- }
- break;
- case CODE_HL: //进入第二级命令 机器人还会冷啊 10
- if(flag1==1)
- {
- flag2=1;
- printf("二级口令10:机器人还会冷啊\r\n");
- // Specific_Player (0x41,0x00,0x0a); //指定曲目为86
- USART_SendData( USART3, 0x0a);
- while(Tx_Buffer[1]!=0xaa);
- printf("发送口令10完毕^_^ \r\n"); //停止
- }
- break;
- case CODE_CSG: //进入第二级命令 唱首歌吧 11
- if(flag1==1)
- {
- flag2=1;
- printf("二级口令11:唱首歌吧\r\n");
- USART_SendData( USART3, 0x0b);
- while(Tx_Buffer[1]!=0xaa);
- // Specific_Player (0x41,0x00,0x56); //指定曲目为86
- printf("发送口令11完毕^_^ \r\n");
- }
- break;
- case CODE_SYQ: //进入第二级命令 上一曲 12
- if(flag1==1)
- {
- flag2=1;
- printf("二级口令12:上一曲\r\n");
- // send_3dat_cmd(0x14); //上一首
- // delay_ms(50);
- // while(BUSY);
- USART_SendData( USART3, 0x0c);
- while(Tx_Buffer[1]!=0xaa);
- printf("发送口令12完毕^_^ \r\n");
- }
- break;
- case CODE_XYS: //进入第二级命令 下一首 13
- if(flag1==1)
- {
- flag2=1;
- printf("二级口令13:下一首\r\n");
- // send_3dat_cmd(0x13); //下一首
- // delay_ms(50);
- // while(BUSY);
- USART_SendData( USART3, 0x0d);
- while(Tx_Buffer[1]!=0xaa);
- printf("发送口令13完毕^_^ \r\n");
- }
- break;
- case CODE_TGW: //进入第二级命令 跳个舞吧 14
- if(flag1==1)
- {
- flag2=1;
- printf("二级口令14:跳个舞吧\r\n");
- USART_SendData( USART3, 0x0e);
- while(Tx_Buffer[1]!=0xaa);
- // Specific_Player (0x41,0x00,0x63); //指定曲目为99
- printf("发送口令14完毕^_^ \r\n");
- }
- break;
- case CODE_SXH: //进入第二级命令 说个笑话 15
- if(flag1==1)
- {
- flag2=1;
- printf("二级口令15:说个笑话\r\n");
- USART_SendData( USART3, 0x0f);
- while(Tx_Buffer[1]!=0xaa);
- // Specific_Player (0x41,0x00,0x0f); //指定曲目为15
- printf("发送口令15完毕^_^ \r\n");
- }
- break;
- case CODE_AJ: //进入第二级命令 安静 16
- if(flag1==1)
- {
- flag2=1;
- printf("二级口令16:安静\r\n");
- USART_SendData( USART3, 0x10);
- while(Tx_Buffer[1]!=0xaa);
- // send_3dat_cmd(0x1E); //停止
- printf("发送口令16完毕^_^ \r\n");
- }
- break;
-
- /***********************************************退出第二级命令 *************************************************/
-
- case CODE_TX: //打开进入第一级命令 退下吧 03
- if(trigger_flag)
- {
- printf("一级口令03:退下吧\r\n");
- // Specific_Player (0x41,0x00,0x03); //指定曲目为15
- LED_D2=1;
- trigger_flag=0;
- flag1=0;
- flag2=0;
- LED_D1=1;
- USART_SendData( USART3, 0x03);
- while(Tx_Buffer[1]!=0xaa);
- printf("发送口令03完毕^_^ \r\n");
- }
- break;
- }
- nAsrStatus = LD_ASR_NONE;
- break;
-
- case LD_ASR_FOUNDZERO:
- printf("未知口令\r\n");
- if(i<2)
- i++;
- else
- i=0x00;
- // USART_SendData( USART1, 0XAA);
- trigger_flag=0;
- LED_D1=1;
- nAsrStatus = LD_ASR_NONE;
- break;
-
- default: nAsrStatus = LD_ASR_NONE;
- break;
- }
- }
- }
- /*-------------------------------------------------*/
- /*函数名:串口3中断服务函数 */
- /*参 数:无 */
- /*返回值:无 */
- /*-------------------------------------------------*/
- void USART3_IRQHandler(void)
- {
- uint8_t getdata;
- uint8_t statu;
-
- statu=USART_GetITStatus(USART3,USART_IT_RXNE);
- if(statu== SET)
- {
- USART_ClearFlag(USART3,USART_IT_RXNE);
- Tx_Buffer[1]=USART_ReceiveData(USART3);
- }
- }
复制代码
|
|
|
|
|
|
|
| | | | | | |  |  | | | | | | | | | | | 不是,这是主函数部分的程序,还有其他部件的软件,太多了不好贴上去。。。
|
|
|
|
|
|
| | | | | | | | | | |  |  | | | | | | | | | | | | | | | 已经发邮箱,学习玩玩就行了,其他用途就不要了吧。。。。
|
|
|
|
|
|
|
| | | | | | | | | | | | | | |  |  | | | | | | | | | | | | | | | | | | | 应该已经发了您邮箱,在年前就发了,你回去查收一下,
|
|
|
|
|
|
|
|
|
|
|
|
|
|