打印

stm32f2x串口第一位为啥是FF

[复制链接]
6177|31
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
如题求解,后面的都是对的,反正不管是电脑发,还是程序直接发给电脑啥的程序运行的瞬间出现个FF啥问题搞不懂。。我是硬件仿真的。。
沙发
mage心寒|  楼主 | 2012-4-25 10:52 | 只看该作者
还想问下stm32串口里面换行和回车指令谁能给发下。。为啥我的USART_SendData(USART1,0x0A);USART_SendData(USART1,0x0D);没反应,我勒个去,stm32直接输出来了,我汗呐。。求解。。

使用特权

评论回复
板凳
airwill| | 2012-4-25 11:42 | 只看该作者
程序运行的瞬间出现个FF啥问题搞不懂, 那是上电状态导致的, 不是你软件里发的数据.

为啥我的USART_SendData(USART1,0x0A);USART_SendData(USART1,0x0D);没反应,没道理, 或许是你的检测收到有问题. 用示波器看看有没有波形出来, 串口调试转成 HEX 方式试试.

使用特权

评论回复
地板
金融小数| | 2012-4-25 12:04 | 只看该作者
好像是RS232接口芯片不灵的缘故

使用特权

评论回复
5
logokfu| | 2012-4-25 12:39 | 只看该作者
:lolLZ不要激动

使用特权

评论回复
6
mage心寒|  楼主 | 2012-4-25 12:52 | 只看该作者
3# airwill
有反应直接将0d啥的输出来了。。汗。。各种不理解。。

使用特权

评论回复
7
mage心寒|  楼主 | 2012-4-25 17:19 | 只看该作者
那个晚上大家都下班了,还想找份STM32串口printf函数,有的贴个谢谢啊。。还有USART_Sendstring这个函数俺也没有,调试很不方便希望有的大虾可以给个。。F1系列的也没有关系。。。

使用特权

评论回复
8
mage心寒|  楼主 | 2012-4-26 15:16 | 只看该作者
这个贴到底有没有人来啊。。我勒个去,路过的给个USART的printf啊。。顺便再给个USART_Sendstring:lol

使用特权

评论回复
9
mage心寒|  楼主 | 2012-4-26 17:20 | 只看该作者
:Q等了两天了就是木有人愿意帮忙哎。。。:'(,有时间自己研究看看。。

使用特权

评论回复
10
fq1110| | 2012-4-26 18:34 | 只看该作者
自己调试用的,发一个,希望对你有帮助。

i32 SendChar(char ch)  
{                /* Write character to Serial Port     */
  USART_SendData(USART1, (unsigned char) ch);
  while (!(USART1->SR & USART_FLAG_TXE));
  return (ch);
}

i32 SendString(char* str)
{
        i32 i;       
        for(i=0;i<strlen(str);i++)
        {
                SendChar(str[i]);
        }
        SendChar('\r');
        SendChar('\n');
        return strlen(str);
}

使用特权

评论回复
11
logokfu| | 2012-4-26 19:00 | 只看该作者
https://bbs.21ic.com/viewthread.php?tid=305901我写的,硬件是107的,里面有个printf的完整工程。你试试。

使用特权

评论回复
12
mage心寒|  楼主 | 2012-4-27 08:19 | 只看该作者
谢谢楼上两位

使用特权

评论回复
13
mage心寒|  楼主 | 2012-4-27 08:54 | 只看该作者
测试可用无错误。。

使用特权

评论回复
14
logokfu| | 2012-4-27 08:57 | 只看该作者
那最后什么结论啊

使用特权

评论回复
15
mage心寒|  楼主 | 2012-4-27 08:57 | 只看该作者
我想说的是11楼你骗了我,:@

使用特权

评论回复
16
mage心寒|  楼主 | 2012-4-27 08:58 | 只看该作者
14# **kfu
你的那个就是发送数据,库里面自带的。。哪有printf????what is a fucking world!!

使用特权

评论回复
17
logokfu| | 2012-4-27 09:08 | 只看该作者
本帖最后由 **kfu 于 2012-4-27 09:21 编辑

老大,我没记错的话我的那个工程应该还有英文注释吧,我的这个程序确实是移植的官方固件库里的例子啊。我用的不是官方的板子。我把其中有些繁琐的东西还精简了些。

使用特权

评论回复
18
logokfu| | 2012-4-27 09:21 | 只看该作者
老大,我没记错的话我的那个工程应该还有英文注释吧,我的这个程序确实是移植的官方固件库里的例子啊。我用的不是官方的板子。我把其中有些繁琐的东西还精简了些。 ...
**kfu 发表于 2012-4-27 09:08


抱歉,我刚才看了看,我的那个printf确实是移植的官方的程序啊。你不就是要个printf程序吗。为了保持官方的原汁原味风格,代码我也是用英文注视的。

使用特权

评论回复
19
mage心寒|  楼主 | 2012-4-27 09:21 | 只看该作者
罢了,printf要不要无所谓了可以输出字符串就Ok了,不过还是谢谢你了,起码你是好心。。

使用特权

评论回复
20
logokfu| | 2012-4-27 09:26 | 只看该作者
本帖最后由 **kfu 于 2012-4-27 09:31 编辑

#include "stm32f10x.h"
#include <stdio.h>
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)

void GPIO_Configuration();
void USART1_Configuration();

int main(void)
{
  GPIO_Configuration();
  USART1_Configuration();
  
  /* Output a message on Hyperterminal using printf function */
  printf("USART Printf Example: retarget the C library printf function to the USART1\n\r");
  
  while (1)
  {
  }
}

void GPIO_Configuration(void)
{
  GPIO_InitTypeDef GPIO_InitStructure;
  
  /* Enable GPIO,AFIO,UART clock */
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA| RCC_APB2Periph_AFIO|RCC_APB2Periph_USART1, ENABLE);

  /* Configure USART Tx as alternate function push-pull */
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
  
  /* Configure USART Rx as input floating */
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
}

void USART1_Configuration(void)
{
  USART_InitTypeDef USART_InitStructure;
  
   /* USARTx configured as follow:
        - BaudRate = 115200 baud  
        - Word Length = 8 Bits
        - One Stop Bit
        - No parity
        - Hardware flow control disabled (RTS and CTS signals)
        - Receive and transmit enabled
  */
  USART_InitStructure.USART_BaudRate = 115200;
  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 configuration */
  USART_Init(USART1, &USART_InitStructure);   
  /* Enable USART */
  USART_Cmd(USART1, ENABLE);
}

/**
  * @brief  Retargets the C library printf function to the USART.
  * @param  None
  * @retval None
  */
PUTCHAR_PROTOTYPE
{
  /* Place your implementation of fputc here */
  /* e.g. write a character to the USART */
USART_SendData(USART1, (uint8_t) ch);

  /* Loop until the end of transmission */
while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET)
  {}

  return ch;
}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

19

主题

1019

帖子

13

粉丝