打印

STM8S单片机波特率设置问题

[复制链接]
6459|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
assault001|  楼主 | 2011-3-2 16:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好:

本人STM8S单片机刚刚开始用,在使用UART通讯功能的时候遇到了困难。想要实现的功能是和PC端的串口调试软件通讯,波特率2400.使用中断输入,然后马上把接收到的数据发回去(最简单的测试那种)。但是貌似波特率设置始终不正确。fmaster用示波器测量过是16Mhz。请看代码:
#include "stm8s105c_s.h"

void UART2_Init(void)
{   
CLK_ECKR = 0x00;
CLK_CKDIVR = 0x03;
CLK_CCOR = 0x19;
  UART2_CR2 = 0;           // 禁止UART发送和接收
  UART2_CR1 = 0x00;           // b5 = 0,允许UART
                             // b2 = 0,禁止校验
                                    
  UART2_CR3 = 0;           // b5,b4 = 00,1个停止位
                           
  UART2_BRR2 = 0x1B;
  UART2_BRR1 = 0xA0;
                                    
  UART2_CR2 = 0x2C;               // b3 = 1,允许发送
                                    // b2 = 1,允许接收
                                    // b5 = 1,允许产生接收中断
}

// 函数功能:从UART3发送一个字符
// 输入参数:ch -- 要发送的字符
// 输出参数:无
// 返 回 值:无
// 备    注:无
void UART2_SendChar(unsigned char ch)
{
  while((UART2_SR & 0x80) == 0x00);  // 若发送寄存器不空,则等待
  UART2_DR = ch;                     // 将要发送的字符送到数据寄存器   
}

main()
{
  // 首先初始化UART3
  UART2_Init();
  _asm("rim");                // 允许CPU全局中断

  while(1)                    // 进入无限循环
  {
  }                              
}
@far @interrupt void UART2_Recv_IRQHandler (void)
{
  unsigned char ch;
   
  ch = UART2_DR;          // 读入接收到的字符
  UART2_SendChar(ch);       // 将字符发送出去
}                                          

接收和发送都没有问题,但是PC端显示的数据不正确。PC端的波特率,停止位,数据位都和程序设置是一致的,没有问题。请大家帮我看一下哪里可能有问题。不胜感激!
沙发
linhaishi| | 2014-4-20 21:10 | 只看该作者
没看出来

使用特权

评论回复
板凳
l217914| | 2014-5-22 09:12 | 只看该作者
主函数没有发送数据?

使用特权

评论回复
地板
autooy| | 2014-5-22 10:12 | 只看该作者
亲爱的朋友,请你在发送完成后等待一段时间再发送!
void UART2_SendChar(unsigned char ch)
{
  while((UART2_SR & 0x80) == 0x00);  // 若发送寄存器不空,则等待
  UART2_DR = ch;                     // 将要发送的字符送到数据寄存器
  delay_ms(50);   
}
或者检测TC标志是否为1,表示发送完成!

使用特权

评论回复
5
蓝海洋864| | 2015-6-23 11:15 | 只看该作者
程序中怎么没有IO口初始化

使用特权

评论回复
6
fanxsd| | 2015-6-23 11:44 | 只看该作者
坐等 大神回复 学习一下。

使用特权

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

本版积分规则

0

主题

3

帖子

1

粉丝