野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 24749|回复: 18

串口助手发送数据 显示的不对应

[复制链接]
发表于 2016-8-22 15:39:07 | 显示全部楼层 |阅读模式
1火花
本帖最后由 lyz864512 于 2016-8-24 09:40 编辑

这是我的程序 请大家指点
#include "stm32f10x.h"
#include "stm32f10x_usart.h"
#include "stm32f10x_exti.h"
#include "stdio.h"

#include "USART.h"
#include "exti.h"
#include "misc.h"

#define ys 0x0fffff//

#define CLI() __set_PRIMASK(1)                /* 1رÕ×üÖD¶Ï */  
#define SEI() __set_PRIMASK(0)                /* ¿a·Å×üÖD¶Ï */

char buf[100];///1003¤¶è

int wei[5];///5λμÄêy×é
int yuwei;///5λêy×éàï±ßêÇ00000
//extern void EXTI_PA0_Config(void);
extern void NVIC_Configuration(void);
extern void GPIO_Configuration1(void);//¶Ë¿ú3õê¼»ˉ
extern void GPIO_Configuration2(void);//¶Ë¿ú3õê¼»ˉ
//long int x;
long int nongdu;///3¤ààDíμÄŨ¶è
//long int yuzhi;
//int flag=4;

void Delay(__IO uint32_t nCount);//¶¨òåÑó3ùoˉêy
void quwei(int shu,int ge[4]);//
//void quwei2(int shu,int ge[4]);//

int main(void)
{               
//          NVIC_Configuration();
          RCC_Configuration();//ê±Öó3õê¼»ˉ
    GPIO_Configuration1();//¶Ë¿ú3õê¼»ˉ
        GPIO_Configuration2();//¶Ë¿ú3õê¼»ˉ

                USART_ClearFlag(USART1, USART_FLAG_TC);//Çå3y±ê־λ
        USART2_Config(115200);//′®¿ú13õê¼»ˉ
                USART_ClearFlag(USART2, USART_FLAG_TC);//Çå3y±ê־λ
        
                CLI();//Ïè1رÕÖD¶Ï
                SEI();//        Ôù′ò¿aÖD¶Ï
         
//                EXTI_PA0_Config();//PA0               
//                EXTI_PC13_Config(); //PC13        
//        
//        nongdu=11520;
                while(1)
                {
//                        for(x=00000;x<99999;x++)
                        
//                                nongdu=x;
//                        nongdu=yuwei;
                //{
                while (USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == RESET);

//                nongdu==USART_ReceiveData(USART1);
                        nongdu=USART1->DR;
                //}
                quwei(nongdu,wei);
                sprintf(buf,"IC(550,200,%d)IC(450,200,%d)IC(350,200,%d)IC(250,200,%d)IC(150,200,%d);\r\n",wei[0],wei[1],wei[2],wei[3],wei[4]);
                GpuSend(buf);///&#207;&#212;ê&#190;·¢&#203;í×&#214;&#196;£í&#188;&#198;&#172;
          Delay(ys);//
//                sprintf(buf,"DS32(480,370,'%d',0);DS32(460,370,'%d',0);DS32(440,370,'%d',0);DS32(420,370,'%d',0);DS32(400,370,'%d',0);\r\n",yuwei[0],yuwei[1],yuwei[2],yuwei[3],yuwei[4]);
//                GpuSend(buf);//&#207;&#212;ê&#190;×&#214;
//                                       
                                
//                yuzhi=yuwei[4]*10000+yuwei[3]*1000+yuwei[2]*100+yuwei[1]*10+yuwei[0];
//                if(yuzhi<nongdu)
//                        GPIO_ResetBits(GPIOF, GPIO_Pin_7);
//                else
//                        GPIO_SetBits(GPIOF, GPIO_Pin_7);
           
   }
}////±è&#189;&#207;′óD&#161;2¢&#191;&#216;&#214;&#198;led
void Delay(__IO uint32_t nCount)
{
        for(; nCount != 0; nCount--);
}

void quwei(int shu,int ge[4])//í&#188;&#198;&#172;&#207;&#212;ê&#190;רó&#195; è&#161;3&#246;êy×&#214;&#184;÷&#206;&#187;
{
        int i;
        for(i=0;i!=5;i++)
        {
                if(shu%10!=0)///%&#199;óóàêy
                        ge=shu%10;
                else
                        ge=10;
                shu=shu/10;///&#199;óéì&#213;&#251;êy
        }
}
//void USART1_IRQHandler(void)
//{
// //????
// if(USART_GetITStatus(USART1,USART_IT_RXNE)==SET)
// {
//  USART_ClearITPendingBit(USART1,USART_IT_RXNE);
//  nongdu=USART_ReceiveData(USART1);
//         quwei(nongdu,wei);
//                sprintf(buf,"IC(550,200,%d)IC(450,200,%d)IC(350,200,%d)IC(250,200,%d)IC(150,200,%d);\r\n",wei[0],wei[1],wei[2],wei[3],wei[4]);
//                GpuSend(buf);///&#207;&#212;ê&#190;·¢&#203;í×&#214;&#196;£í&#188;&#198;&#172;
////USART_SendData(USART2,buf[]);
// }

// }

void quwei2(int shu,int ge[4])//&#198;&#213;í¨×&#214;·&#251;
{
        int i=0;
                for(i=0;i!=5;i++)
        {
                ge=shu%10;
                shu=shu/10;
        }
}

#include "usart.h"
void GPIO_Configuration1(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;
               
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//3&#245;ê&#188;&#187;ˉ&#203;ù&#182;è
        
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;//USART1 TX
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;//&#184;′ó&#195;í&#198;íìê&#228;3&#246;
        GPIO_Init(GPIOA, &GPIO_InitStructure);
        
//        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;//USART RX
//        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//&#184;&#161;&#191;&#213;ê&#228;è&#235;
//        GPIO_Init(GPIOA, &GPIO_InitStructure);
}
void GPIO_Configuration2(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;
        USART_InitTypeDef USART_InitStructure;
        
        /* config USART1 clock */
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA, ENABLE);
        
        /* USART1 GPIO config */
        /* Configure USART1 Tx (PA.09) as alternate function push-pull */
//        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
//        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
//        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
//        GPIO_Init(GPIOA, &GPIO_InitStructure);   
        /* Configure USART1 Rx (PA.10) as input floating */
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
        GPIO_Init(GPIOA, &GPIO_InitStructure);
        
        /* USART1 mode config */
        USART_InitStructure.USART_BaudRate = 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(USART1, &USART_InitStructure);
        
        /* ê1&#196;ü′&#174;&#191;ú1&#189;óê&#213;&#214;D&#182;&#207; */
        USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
        

        USART_Cmd(USART1, ENABLE);
}
void NVIC_Configuration(void)
{
        NVIC_InitTypeDef NVIC_InitStructure;
        /* Configure the NVIC Preemption Priority Bits */  
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
        
        /* Enable the USARTy Interrupt */
        NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;         
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
        NVIC_Init(&NVIC_InitStructure);
}
//void GPIO_Configuration2(void)
//{
//        GPIO_InitTypeDef GPIO_InitStructure;
//               
//        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//3&#245;ê&#188;&#187;ˉ&#203;ù&#182;è
//        
////        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;//USART1 TX
////        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;//&#184;′ó&#195;í&#198;íìê&#228;3&#246;
////        GPIO_Init(GPIOA, &GPIO_InitStructure);
//        
//        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;//USART RX
//        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//&#184;&#161;&#191;&#213;ê&#228;è&#235;
//        GPIO_Init(GPIOA, &GPIO_InitStructure);
//}

//void USART1_Config(uint32_t bod)
//{
//        
//        USART_InitTypeDef USART_InitStructure;
//        USART_InitStructure.USART_BaudRate = bod;                                                               
//        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_Init(USART1, &USART_InitStructure);
//        USART_ITConfig(USART2,USART_IT_RXNE,ENABLE);
//  USART_Cmd(USART1, ENABLE);
////        USART_Cmd(USART1, ENABLE);
//}
void USART2_Config(uint32_t bod)
{
        USART_InitTypeDef USART_InitStructure;
        
        USART_InitStructure.USART_BaudRate = bod;                                                               
        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(USART2, &USART_InitStructure);
  USART_ITConfig(USART1, USART_IT_TXE, ENABLE);
  USART_Cmd(USART2, ENABLE);
//        USART_Cmd(USART1, ENABLE);
}
void RCC_Configuration(void)
{
        SystemInit();
                        
        RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOF, ENABLE);
//  RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);
}
void GpuSend(char * buf1)
{               
        int i=0;
        while(1)
        {
                if(buf1!=0)
                {
                        USART_SendData(USART2,buf1);
                        while (USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET);        
                        i++;
//
                }        
                else return;
        }
}
//int fgetc(FILE *f)
//{
//                /* μè′y′&#174;&#191;ú1ê&#228;è&#235;êy&#190;Y */
//                while (USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == RESET);

//                return (int)USART_ReceiveData(USART1);
//}
//void GpuSend(char * buf1)
//{               
//        int i=0;
//        while(1)
//        {
//                if(buf1!=0)
//                {
//                        USART_SendData(USART1,buf1);
//                        while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);        
//                        i++;
////
//                }        
//                else return;
//        }
//}

chengxu1.zip

5.61 MB, 下载次数: 19

程序

回复

使用道具 举报

发表于 2016-8-22 17:02:00 | 显示全部楼层
能不能把代码整理下再发上来。。
回复

使用道具 举报

发表于 2016-8-22 17:58:47 来自手机 | 显示全部楼层
乱的一逼
回复

使用道具 举报

发表于 2016-8-22 18:46:01 | 显示全部楼层
我擦,自带QQ表情的代码,怎么这么神奇
回复

使用道具 举报

发表于 2016-8-22 18:50:28 | 显示全部楼层
把文件发上来吧,你的文件是用什么编码的?
回复

使用道具 举报

 楼主| 发表于 2016-8-24 09:40:53 | 显示全部楼层

不是乱的一笔 是复制过来就乱码了  显示上传了压缩文件 帮忙看看
回复

使用道具 举报

 楼主| 发表于 2016-8-24 09:41:13 | 显示全部楼层
flyleaf 发表于 2016-8-22 18:50
把文件发上来吧,你的文件是用什么编码的?

上传了压缩文件帮忙看看
回复

使用道具 举报

 楼主| 发表于 2016-8-24 09:41:39 | 显示全部楼层
随风 发表于 2016-8-22 17:02
能不能把代码整理下再发上来。。

上传了压缩文件帮忙看看
回复

使用道具 举报

 楼主| 发表于 2016-8-24 09:42:46 | 显示全部楼层
最多就显示到255为什么
回复

使用道具 举报

发表于 2016-8-24 12:51:26 | 显示全部楼层
lyz864512 发表于 2016-8-24 09:42
最多就显示到255为什么

256的二进制就又多了一位呗,你的位数不够
回复

使用道具 举报

 楼主| 发表于 2016-8-25 09:41:52 | 显示全部楼层
张宙辕 发表于 2016-8-24 12:51
256的二进制就又多了一位呗,你的位数不够

位数不够??什么意思呀?能告诉我在哪里改吗?接收还是发送?
回复

使用道具 举报

 楼主| 发表于 2016-8-25 09:42:20 | 显示全部楼层
lyz864512 发表于 2016-8-24 09:42
最多就显示到255为什么

不知道  是不是接收数据的问题还是发送问题?
回复

使用道具 举报

发表于 2016-8-25 10:10:38 | 显示全部楼层
lyz864512 发表于 2016-8-25 09:41
位数不够??什么意思呀?能告诉我在哪里改吗?接收还是发送?

senddata是发送字符,最多到255,你换个,火哥不是有printf重定义么,你用那个试试。
回复

使用道具 举报

 楼主| 发表于 2016-8-25 13:18:24 | 显示全部楼层
国丫先森 发表于 2016-8-25 10:10
senddata是发送字符,最多到255,你换个,火哥不是有printf重定义么,你用那个试试。

printf可以把内容发送到显示屏上吗?
回复

使用道具 举报

发表于 2016-8-25 13:26:23 | 显示全部楼层
lyz864512 发表于 2016-8-25 13:18
printf可以把内容发送到显示屏上吗?

什么显示屏,你不是串口通信么?如果你说的是电脑显示屏,看看火哥的串口通信的视频,那里有printf重定义的讲解,是可以发送到显示屏的,你用printf发整型试试可不可以发255以上;如果你说的是触摸屏,看看火哥的触摸屏视频,那里有特殊的函数可以显示到触摸屏上。
回复

使用道具 举报

 楼主| 发表于 2016-8-25 16:08:44 | 显示全部楼层
国丫先森 发表于 2016-8-25 13:26
什么显示屏,你不是串口通信么?如果你说的是电脑显示屏,看看火哥的串口通信的视频,那里有printf重定义 ...

gpu usart串口屏 带有触控功能
回复

使用道具 举报

 楼主| 发表于 2016-8-25 16:09:47 | 显示全部楼层
国丫先森 发表于 2016-8-25 13:26
什么显示屏,你不是串口通信么?如果你说的是电脑显示屏,看看火哥的串口通信的视频,那里有printf重定义 ...

我认为应该不是发送的问题 因为之前按键控制的时候就能显示99999 现在改成串口传输 就不行了
回复

使用道具 举报

发表于 2016-8-25 16:29:17 | 显示全部楼层
lyz864512 发表于 2016-8-25 16:09
我认为应该不是发送的问题 因为之前按键控制的时候就能显示99999 现在改成串口传输 就不行了

所以叫你试试喽,都试试,不然光想怎么知道是什么问题。
回复

使用道具 举报

发表于 2016-8-25 18:13:13 | 显示全部楼层
lyz864512 发表于 2016-8-25 09:41
位数不够??什么意思呀?能告诉我在哪里改吗?接收还是发送?

一般串口不是8位数据么,那二级制就是11111111,换算成十进制就是255了呗。
回复

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2025-1-12 15:54 , Processed in 0.034844 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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