打印
[STM8]

STM8S207S8上UART1串口发送写数据无效,不使用库

[复制链接]
3778|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
honami520|  楼主 | 2010-6-29 09:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void CLK_INIT(void)
{
    CLK_CKDIVR = 0x19; /*HSI/8、CPU = 2/2,1M速度*/
    CLK_PCKENR1 = 0x04; /*只开启uart1的时钟*/
    CLK_PCKENR2 = 0x00; /*打开ADC的时钟*/
}
/***********************************/
//     
//
/**********************************/
void IO_INIT(void)
{
    PA_CR1 = 0x00; /*推挽输出*/
    PA_CR2 = 0x00; /*最大输出为2MHZ,禁止外部中断*/
    PA_DDR |= 0x20; /*PA5为输出*/      
}

void UART1_INIT(void)
{
    UART1_BRR2 = 0x00;
    UART1_BRR1 = 0x0d;  /*2M的Fmaster下9600的波特率*/
     
    UART1_DR = 0xaa;
    UART1_CR2 = 0x08;   /*发送完寄存器空,发送使能*/
    UART1_CR3 = 0x00;   /*1个停止位*/     
}

#pragma vector = UART1_T_TXE_vector
__interrupt __root void UART1_TX(void)
{
    UART1_SR = 0x00;
    UART1_DR = 0xaa;           
}

上面是我的初始化和中断函数,在IAR FOR STM8中写的。现在情况是这样的。用STLINK连接三合一小板DEBUG的时候,程序可以进入中断,但是UART1_DR永远都是0x00,不会根据我的需要来改变。这到底是怎么回事啊?
沙发
honami520|  楼主 | 2010-6-29 12:12 | 只看该作者
我要疯了,难道就没有一个人是不用库写串口的吗?难道所有的人都是用库的?写过串口通信的人只需要贴上自己的那一段代码给我参考下,就完了嘛,根本不占用你时间的啊!昨晚就想发帖了,结果说11:30后不许发帖。

使用特权

评论回复
板凳
ST_ARM| | 2010-6-29 13:39 | 只看该作者
"UART1_DR永远都是0x00,不会根据我的需要来改变。这到底是怎么回事啊"
你一将数值写入,该值就会备传输到移位寄存器,UART1_DR马上就编程零了,同时发送寄存器为空标志位被置位。

串口是否正常,你使用示波器查看串口的发送引脚是否有信号,就知道你的串口是否正常。

使用特权

评论回复
地板
香水城| | 2010-6-29 18:25 | 只看该作者
写UART1_DR寄存器操作的是输出数据寄存器,读UART1_DR寄存器操作的是输入数据寄存器。你永远读不到输出数据寄存器的内容,也永远写不了输入数据寄存器。

使用特权

评论回复
5
honami520|  楼主 | 2010-6-30 23:07 | 只看该作者
知道了!多谢各位。

使用特权

评论回复
6
huo_shan| | 2012-9-15 19:05 | 只看该作者
4L,霸气!

使用特权

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

本版积分规则

25

主题

189

帖子

2

粉丝