打印
[STM8]

STM8串口问题

[复制链接]
1664|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
拿起书本|  楼主 | 2013-10-10 16:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include "stm8s.h"
#include "stm8s_uart2.h"
#include "stm8s_gpio.h"
#include "stm8s_clk.h"
#include "stdio.h"

void Delay(u16 time)
{
  while(time != 0)
  {
    time--;
  }
}
//初始化串口   波特率115200,8位数据位 1位停止位,无奇偶校验
//查询发送,中断方式接收。
void UART_Init(void)
{
    UART2_DeInit();
    UART2->BRR2 = 0X01; //设置波特率为9600
    UART2->BRR1 = 0X34;
    UART2->CR2 = 0X2C;  //设置串口中断,允许接收发送
   // UART2_Cmd(ENABLE);
}


void Init_CLK(void)
{

  CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV2);//设置主频为内部高速时钟,8MHz
}

void UART2_SendChar(unsigned char dat)
{
  while((UART2->SR & 0X80) == 0X00);
  UART2->DR = dat;
}

void main(void)
{
  Init_CLK();
  enableInterrupts();
  UART_Init();
  while(1);
}        

#pragma vector=0x14
__interrupt void UART2_RX_IRQHandler(void)
{
   UART2_SendChar(0x02);
}                  
这是我的UART2的程序,用的是硬件仿真,STM8S105,每次在线仿真都不能把0x02输出来,具体是什么问题啊,用过的朋友给指点一二吧,先谢谢了。
沙发
feilusia| | 2013-10-10 17:35 | 只看该作者
先建议你进中断时把总中断关了。
然后请检查下#pragma vector=0x14的值是否正确。
不知道你具体用的芯片是什么型号,我查了下iostm8s105c4的头文件
#define UART2_T_TXE_vector                   0x16
#define UART2_T_TC_vector                    0x16
#define UART2_R_OR_vector                    0x17
#define UART2_R_RXNE_vector                  0x17
#define UART2_R_IDLE_vector                  0x17
#define UART2_R_PE_vector                    0x17
#define UART2_R_LBDF_vector                  0x17

使用特权

评论回复
板凳
神的礼物| | 2013-10-10 17:36 | 只看该作者
enableInterrupts();
  UART_Init();
这两句换成
UART_Init();
enableInterrupts();
试试

使用特权

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

本版积分规则

个人签名:好好学习,天天向上!

519

主题

4194

帖子

31

粉丝