OpenEdv-开源电子网

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

关于串口发送问题

[复制链接]

6

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2015-3-15
在线时间
1 小时
发表于 2015-3-15 11:08:54 | 显示全部楼层 |阅读模式
5金钱
怎么把串口3接收到的条形码扫描设备获得的条码信息经过主控stm32f103的串口4发送到上位机的串口调试助手,(条形码扫描设备的主控也是stm32f103),希望高手指导下,谢谢

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

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11558
金钱
11558
注册时间
2014-4-1
在线时间
1318 小时
发表于 2015-3-15 11:36:51 | 显示全部楼层
串口3接收,然后送到串口4,

为什么这么问。。。
回复

使用道具 举报

6

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2015-3-15
在线时间
1 小时
 楼主| 发表于 2015-3-15 14:50:26 | 显示全部楼层
回复【2楼】xuande:
---------------------------------
老师您好,就是我要确保我的主控能够收到来自条码扫描设备的扫码信息,然后把这些信息发送到串口调试助手,条码扫描设备是买的现成的,
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11558
金钱
11558
注册时间
2014-4-1
在线时间
1318 小时
发表于 2015-3-15 22:01:30 | 显示全部楼层
我奇怪的是,只要会一个串口的收、发操作,两个串口之间还不会吗?

关键是搞懂一个串口。
回复

使用道具 举报

6

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2015-3-15
在线时间
1 小时
 楼主| 发表于 2015-3-16 08:44:22 | 显示全部楼层
回复【4楼】xuande:
---------------------------------
恩,我现在在搞,想法是把一个串口收到的数据放到指定寄存器内,然后另一个在把该寄存器内的数据读出来发到串口调试助手,小弟刚入手,老师又催的紧,白纸一张啊。。。,正在想程序怎么搞。。。
回复

使用道具 举报

70

主题

6763

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13135
金钱
13135
注册时间
2012-11-26
在线时间
3814 小时
发表于 2015-3-16 09:16:09 | 显示全部楼层
回复【5楼】雕刻时光:
---------------------------------
大哥  你开个buf  存储收到的   待到发送时,把buf里数据发出去不得了
学无止境
回复

使用道具 举报

6

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2015-3-15
在线时间
1 小时
 楼主| 发表于 2015-3-16 20:15:25 | 显示全部楼层
回复【6楼】jermy_z:
---------------------------------
回复【4楼】xuande:
---------------------------------
以下是我的程序,不知怎么回事,串口调试助手接到的是连续不断的00,我想达到的是串口3接收条码扫描信息(设备是现成的),然后串口4把接收的发送调试助手,求大虾指教下,谢谢,谢谢
这是uart1.c的
#include "sys.h"
#include "uart1.h"   

 
    
u8 USART3_RX_BUF[USART_REC_LEN];//??????????×??óUSART_REC_LEN×???.

u8 n=0;
u8 i=0;
 
u16 USART3_RX_STA=0;//????×???±ê??

void uart_init(u32 bound){

    //????????

    GPIO_InitTypeDef GPIO_InitStructure;
    USART_InitTypeDef USART_InitStructure;
    NVIC_InitTypeDef NVIC_InitStructure;
    NVIC_Configuration();


    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOB, ENABLE);     
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3|RCC_APB1Periph_UART4, ENABLE);

    USART_DeInit(USART3);
    USART_DeInit(UART4);      



     //USART3_TX   B.10
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; //PB.10

    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //???????ì

    GPIO_Init(GPIOB, &GPIO_InitStructure); 
    
    //USART3_RX   B.11

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//????????
    GPIO_Init(GPIOB, &GPIO_InitStructure); 

 
    //UART4_TX   
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; //PC10 
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //???????ì
    GPIO_Init(GPIOC, &GPIO_InitStructure); 
 

    //UART4_RX     C11

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//????????
    GPIO_Init(GPIOC, &GPIO_InitStructure); 

   //USART3 ??????
    USART_InitStructure.USART_BaudRate = bound;//??°??¨????9600;
    USART_InitStructure.USART_WordLength = USART_WordLength_8b;
    USART_InitStructure.USART_StopBits = USART_StopBits_1;
    USART_InitStructure.USART_Parity = USART_Parity_No;
    USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
    USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; 

    USART_Init(USART3, &USART_InitStructure); 
 
        //UART4 ??????

    USART_InitStructure.USART_BaudRate = bound;//??°??¨????9600;
    USART_InitStructure.USART_WordLength = USART_WordLength_8b;
    USART_InitStructure.USART_StopBits = USART_StopBits_1;
    USART_InitStructure.USART_Parity = USART_Parity_No;
    USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
    USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; 

    USART_Init(UART4, &USART_InitStructure); 

 

 
   //Uart4 NVIC ????
    NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn;
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ;//??????????3
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;      //×???????3
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;         //IRQ?¨??????
    NVIC_Init(&NVIC_InitStructure); //?ù?????¨????????????NVIC?????÷

    USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);//????????
 
    USART_Cmd(UART4, ENABLE);  //????????                  
}

static void NVIC_Configuration(void)
{
  NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);

  //Uart4 NVIC ????
    NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn;
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ;//??????????3
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;      //×???????3
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;         //IRQ?¨??????
    NVIC_Init(&NVIC_InitStructure); //?ù?????¨????????????NVIC?????÷

    USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);//????????
 
    USART_Cmd(UART4, ENABLE);  //????????  



}

void USART3_IRQHandler(void)                    //????3????·??????ò
    {

    u8 Res3;
    if(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET)  //

        {
        Res3=USART_ReceiveData(USART3);//(USART3->DR);   //????????????????
         
            USART3_RX_BUF[USART3_RX_STA]=Res3; 
             USART3_RX_STA++;

              if(USART3_RX_STA==5)
 
             {
               USART3_RX_STA=0;
                 
              i=USART3_RX_BUF[0]+USART3_RX_BUF[1]+USART3_RX_BUF[2]+USART3_RX_BUF[3];
         
             if(USART3_RX_BUF[0]==0XFF&&USART3_RX_BUF[1]==0X81&&i==USART3_RX_BUF[4])
 
               {
             
                n=0x01;
                 
                  }
                               
             else {n=0;}
         

               }
 
            }           
 
         }
 



这是uart.h的
#ifndef __USART_H
#define __USART_H

#include "stdio.h" 
#include "sys.h"

#define USART_REC_LEN           5   //?¨??×??ó×????? 200

extern u8  USART3_RX_BUF[USART_REC_LEN]; //????????,×??óUSART_REC_LEN×???????????????·?
extern u8  n;  
extern u16 USART3_RX_STA;

void uart_init(u32 bound);

#endif

 




这是main.c的

#include "stm32f10x.h"
#include "sys.h"
#include "uart1.h"
#include "led.h"
 
 int main(void)
 { 

    u8 t=0;
    //NVIC_Configuration();    //?è??NVIC????·?×é2??2??????????,2???ì????????
    uart_init(115200);
    while(1)

    {


LED_GPIO_Config();
LED1( ON );


USART_Cmd(USART3, ENABLE);
 
     while(n!=0X01)
        {                     
         

         USART_ITConfig(USART3, USART_IT_RXNE, DISABLE);//????????±?????

            n=0;   
            for(t=0;t<5;t++)

            {

                USART_SendData(UART4, USART3_RX_BUF[t]);//?ò????4·???????

                while(USART_GetFlagStatus(UART4,USART_FLAG_TC)!=SET);//????·????á??

            }    
           USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);  //????????????
 
        }

 

    USART_Cmd(USART3, DISABLE);  

}

}
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-25 05:24

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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