OpenEdv-开源电子网

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

串口通信的问题

[复制链接]

13

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
95
金钱
95
注册时间
2015-12-28
在线时间
17 小时
发表于 2016-1-18 17:50:37 | 显示全部楼层 |阅读模式
3金钱
我用一个板子接受另一个板子发来的数据,用串口3,请问不能直接用库函数实现吗?有什么问题,这个是发送端的程序,发送超声波测的距离。[mw_shl_code=applescript,true] int main(void)
{               
        u32 temp=0;
        delay_init();                     //延时函数初始化          
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);         //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
        USART1_Config();
        USART3_Config();

        TIM3_PWM_Init(89,0);                 //不分频。PWM频率=72000/(899+1)=80Khz
        TIM_SetCompare2(TIM3,44);
        TIM5_Cap_Init(0XFFFF,72-1);        //以1Mhz的频率计数
           while(1)
        {                          
                if(TIM5CH1_CAPTURE_STA&0X80)//成功捕获到了一次上升沿
                {
                        temp=TIM5CH1_CAPTURE_STA&0X3F;
                        temp*=65536;//溢出时间总和
                        temp+=TIM5CH1_CAPTURE_VAL;//得到总的高电平时间
                        printf("HIGH:%d us\r\n",temp);//打印总的高点平时间
                        USART_SendData(USART3, temp);
                        TIM5CH1_CAPTURE_STA=0;//开启下一次捕获
                        delay_ms(200);
                }
        }[/mw_shl_code]

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

13

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
95
金钱
95
注册时间
2015-12-28
在线时间
17 小时
 楼主| 发表于 2016-1-18 17:51:56 | 显示全部楼层
这个是接受端的程序[mw_shl_code=c,true]                                RxData = USART_ReceiveData(USART3);
                                if(RxData>1000)
                                {
                                syn6288_SpeakStr("报警 ",0);
                                }[/mw_shl_code]
回复

使用道具 举报

13

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
95
金钱
95
注册时间
2015-12-28
在线时间
17 小时
 楼主| 发表于 2016-1-18 19:49:24 | 显示全部楼层
大神在哪里
回复

使用道具 举报

26

主题

201

帖子

0

精华

高级会员

Rank: 4

积分
606
金钱
606
注册时间
2013-12-14
在线时间
125 小时
发表于 2016-1-18 19:51:25 | 显示全部楼层
本帖最后由 lialong1989 于 2016-1-18 19:52 编辑

void USART_SendData(USART_TypeDef* USARTx, uint16_t Data)
u32 temp=0;

注意两个串口的波特率要相同;中断最好不要有其他函数(与此题无关)。

回复

使用道具 举报

13

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
95
金钱
95
注册时间
2015-12-28
在线时间
17 小时
 楼主| 发表于 2016-1-18 20:07:52 | 显示全部楼层
lialong1989 发表于 2016-1-18 19:51
void USART_SendData(USART_TypeDef* USARTx, uint16_t Data)
u32 temp=0;

0.0逗我呢大哥...
回复

使用道具 举报

26

主题

201

帖子

0

精华

高级会员

Rank: 4

积分
606
金钱
606
注册时间
2013-12-14
在线时间
125 小时
发表于 2016-1-18 20:23:27 | 显示全部楼层

是啊,要不然没事干
回复

使用道具 举报

16

主题

409

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1292
金钱
1292
注册时间
2014-12-20
在线时间
534 小时
发表于 2016-1-18 20:31:38 | 显示全部楼层
本帖最后由 BMN李 于 2016-1-18 20:34 编辑
864384664 发表于 2016-1-18 17:51
这个是接受端的程序[mw_shl_code=c,true]                                RxData = USART_ReceiveData(USART3);
                                if(RxData>1000)
...

发送和接收都是单字节的,无符号取值范围0~255。
回复

使用道具 举报

13

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
95
金钱
95
注册时间
2015-12-28
在线时间
17 小时
 楼主| 发表于 2016-1-18 20:40:39 | 显示全部楼层
BMN李 发表于 2016-1-18 20:31
发送和接收都是单字节的,无符号取值范围0~255。

RxData是u16的啊
回复

使用道具 举报

16

主题

409

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1292
金钱
1292
注册时间
2014-12-20
在线时间
534 小时
发表于 2016-1-18 21:05:08 | 显示全部楼层

但是没用到那么大。。。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-22 00:28

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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