OpenEdv-开源电子网

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

分享串口1-5,5个串口程序,库函数版本

[复制链接]

25

主题

105

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
457
金钱
457
注册时间
2015-8-16
在线时间
116 小时
发表于 2016-7-31 17:41:44 | 显示全部楼层 |阅读模式
搞了一天,之前一直死在串口4接收中断那里,终于搞出来了,分享一下串口1-5,5个串口程序,库函数版本

串口1-5.rar

1.31 MB, 下载次数: 1937

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

使用道具 举报

25

主题

105

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
457
金钱
457
注册时间
2015-8-16
在线时间
116 小时
 楼主| 发表于 2016-7-31 17:43:57 | 显示全部楼层
回复 支持 反对

使用道具 举报

10

主题

48

帖子

0

精华

初级会员

Rank: 2

积分
117
金钱
117
注册时间
2016-7-14
在线时间
28 小时
发表于 2016-7-31 20:13:42 | 显示全部楼层
感谢分享
回复 支持 反对

使用道具 举报

0

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
77
金钱
77
注册时间
2016-6-20
在线时间
10 小时
发表于 2016-8-4 18:10:55 | 显示全部楼层
谢谢楼主分享!
回复 支持 反对

使用道具 举报

1

主题

10

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2016-8-17
在线时间
6 小时
发表于 2016-8-18 16:19:38 | 显示全部楼层
感谢分享!
楼主我用您的程序直接在上面修改,改为用USART2输出,但是用串口调试助手没有反应,能问下为什么吗
我就改了main函数
        while(1)
        {
        if(USART2_RX_STA&0x8000)
                {                                          
                        len=USART2_RX_STA&0x3fff;//μÃμ½′Ë′νóêÕμ½μÄêy¾Y3¤¶è
                        u2_printf("\r\nÄú·¢ËíμÄÏûÏ¢Îa:\r\n");
                        for(t=0;t<len;t++)
                        {
                                USART2->DR=USART2_RX_BUF[t];
                                while((USART2->SR&0X40)==0);//μè′y·¢&#203;í&#189;áê&#248;
                        }
                        u2_printf("\r\n\r\n");//2&#229;è&#235;&#187;&#187;DD
                        USART2_RX_STA=0;
                }
        else
                {
                        times++;
                        if(times%5000==0)
                        {
                                u2_printf("\r\nALIENTEK MiniSTM32&#191;a·¢°&#229; ′&#174;&#191;úêμ&#209;é\r\n");
                                u2_printf("&#213;yμ&#227;&#212;-×ó@ALIENTEK\r\n\r\n\r\n");
                        }
                        if(times%200==0)u2_printf("&#199;&#235;ê&#228;è&#235;êy&#190;Y,ò&#212;&#187;&#216;3μ&#188;ü&#189;áê&#248;\r\n");  
                        delay_ms(10);   
                }
        }
}
回复 支持 反对

使用道具 举报

25

主题

105

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
457
金钱
457
注册时间
2015-8-16
在线时间
116 小时
 楼主| 发表于 2016-8-18 20:06:41 | 显示全部楼层
DesirecH 发表于 2016-8-18 16:19
感谢分享!
楼主我用您的程序直接在上面修改,改为用USART2输出,但是用串口调试助手没有反应,能问下为什 ...

你串口调试助手波特率设置为多少,有没有设置对?我程序里面波特率设置是设置问哦9600的
回复 支持 反对

使用道具 举报

25

主题

105

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
457
金钱
457
注册时间
2015-8-16
在线时间
116 小时
 楼主| 发表于 2016-8-18 20:09:55 | 显示全部楼层
DesirecH 发表于 2016-8-18 16:19
感谢分享!
楼主我用您的程序直接在上面修改,改为用USART2输出,但是用串口调试助手没有反应,能问下为什 ...

[mw_shl_code=applescript,true]void GPIOX_Configuration(void)
{
        USART1_GPIO_Config(9600);
        USART2_GPIO_Config(9600);
        USART3_GPIO_Config(9600);
        UART4_GPIO_Config(9600);
        UART5_GPIO_Config(9600);
}[/mw_shl_code]



全部为9600哦
回复 支持 反对

使用道具 举报

1

主题

10

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2016-8-17
在线时间
6 小时
发表于 2016-8-19 14:41:51 | 显示全部楼层
电子爱好探索者 发表于 2016-8-18 20:09
[mw_shl_code=applescript,true]void GPIOX_Configuration(void)
{
        USART1_GPIO_Config(9600);

我都设置115200.我有在usart.c里面修改。。我也不知道为什么串口2就是用不起来。我现在用1和3.。2 就暂时不去管了。
回复 支持 反对

使用道具 举报

1

主题

10

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2016-8-17
在线时间
6 小时
发表于 2016-8-19 16:48:01 | 显示全部楼层
电子爱好探索者 发表于 2016-8-18 20:09
[mw_shl_code=applescript,true]void GPIOX_Configuration(void)
{
        USART1_GPIO_Config(9600);

我想实现从串口1接收到数据,然后从串口3发回电脑,我用串口调试助手可以看到串口1收到的数据。main函数的循环应该怎么写啊?求教求教
回复 支持 反对

使用道具 举报

25

主题

105

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
457
金钱
457
注册时间
2015-8-16
在线时间
116 小时
 楼主| 发表于 2016-8-19 17:50:32 | 显示全部楼层
DesirecH 发表于 2016-8-19 16:48
我想实现从串口1接收到数据,然后从串口3发回电脑,我用串口调试助手可以看到串口1收到的数据。main函数 ...

[mw_shl_code=applescript,true]
extern u8 USART3_TX_BUF[USART1_MAX_RECV_LEN];         //串口3,发送缓存区

int main(void)
{
    u16 i,rxlen;
    u16 times=0;
   
    if(USART1_RX_STA&0X8000)                        //串口1接收到一次数据了
    {
        rxlen=USART1_RX_STA&0X3FFF;        //得到数据长度
        for(i=0;i<rxlen;i++)
        {
            USART3_TX_BUF=USART1_RX_BUF;//将串口1接收到的数据传给串口3
        }            
        USART1_RX_STA=0;
        USART3_TX_BUF=0;
        u3_printf("\r\n您发送的消息为:\r\n");
        u3_printf("\r\n%s\r\n",USART3_TX_BUF);//串口3发送接收到的数据到电脑
    }
   
    else
    {
        times++;
        if(times%5000==0)
        {
                                u3_printf("\r\nALIENTEK MiniSTM32开发板 串口实验\r\n");
                                u3_printf("正点原子@ALIENTEK\r\n\r\n\r\n");
        }
        if(times%200==0)u3_printf("请输入数据,以回车键结束\r\n");  
        delay_ms(10);   
    }
}
[/mw_shl_code]

思路大概这样。
回复 支持 反对

使用道具 举报

25

主题

105

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
457
金钱
457
注册时间
2015-8-16
在线时间
116 小时
 楼主| 发表于 2016-8-19 17:54:32 | 显示全部楼层
DesirecH 发表于 2016-8-19 16:48
我想实现从串口1接收到数据,然后从串口3发回电脑,我用串口调试助手可以看到串口1收到的数据。main函数 ...

[mw_shl_code=applescript,true]extern u8 USART3_TX_BUF[USART1_MAX_RECV_LEN];   //串口3,发送缓存区

int main(void)
{       
        u8 i;
        u8 rxlen;       
        u16 times=0;

    System_Init();
   
        while(1)
        {
        if(USART1_RX_STA&0X8000)                //串口1接收到一次数据了
        {
            rxlen=USART1_RX_STA&0X3FFF; //得到数据长度
            for(i=0;i<rxlen;i++)
            {
                USART3_TX_BUF=USART1_RX_BUF;//将串口1接收到的数据传给串口3
            }           
            USART1_RX_STA=0;
            USART3_TX_BUF=0;
            u3_printf("\r\n您发送的消息为:\r\n");
            u3_printf("\r\n%s\r\n",USART3_TX_BUF);//串口3发送接收到的数据到电脑
        }
     
        else
        {
            times++;
            if(times%5000==0)
            {
                u3_printf("\r\nALIENTEK MiniSTM32开发板 串口实验\r\n");
                u3_printf("正点原子@ALIENTEK\r\n\r\n\r\n");
            }
            if(times%200==0)u3_printf("请输入数据,以回车键结束\r\n");  
            delay_ms(10);   
        }
        }
}[/mw_shl_code]
回复 支持 反对

使用道具 举报

1

主题

10

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2016-8-17
在线时间
6 小时
发表于 2016-8-19 18:18:06 | 显示全部楼层
电子爱好探索者 发表于 2016-8-19 17:54
[mw_shl_code=applescript,true]extern u8 USART3_TX_BUF;   //串口3,发送缓存区

int main(void)

谢谢老师的回复!我再体会体会
回复 支持 反对

使用道具 举报

25

主题

105

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
457
金钱
457
注册时间
2015-8-16
在线时间
116 小时
 楼主| 发表于 2016-8-19 18:43:45 | 显示全部楼层
DesirecH 发表于 2016-8-19 18:18
谢谢老师的回复!我再体会体会

不客气,大家一起学习,我也是学生,现在大二,下学期大三
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2017-3-13
在线时间
16 小时
发表于 2020-10-6 09:34:33 | 显示全部楼层
您好,您是修改了库文件的哪里吗?
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2017-12-20
在线时间
6 小时
发表于 2021-2-19 15:52:43 | 显示全部楼层
什么原因一直死在串口4中断那里
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-28 23:57

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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