打印
[STM8]

大神帮我分析一下

[复制链接]
880|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zuo2016|  楼主 | 2016-8-16 14:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 zuo2016 于 2016-8-16 15:12 编辑

我用STM8S207C8T6在串口1收发都好好的程序,改到串口3为啥只能收,不能发了
void uart3_init(){
        UART3_BRR2 = 0x01;
        UART3_BRR1 = 0x34;//设置波特率为19200
        UART3_CR1 = 0x00;        //设置接收数据位为8位
        UART3_CR3 = 0x00;        //设置停止位为1位
        UART3_CR4 = 0x00;
        UART3_CR6 = 0x00;
        UART3_CR2 =0x2c;        //使能发送、接收
}
void clk_init(){
        CLK_CKDIVR = 0x00;//cpu 采用内部16/1=16M RC时钟
}
main()
{
        clk_init();
        uart3_init();
        send_buf1 = 0;
        _asm("rim");
        while (1){
                while(!(UART3_SR &0x80));
                UART3_DR = send_buf1;
                while((UART3_SR &0x40)==0);
                delay(1000);
                send_buf1++;
        }
}
沙发
Bermanrep| | 2016-8-16 16:20 | 只看该作者
串口线的方向有没有接反呢?

使用特权

评论回复
板凳
mmuuss586| | 2016-8-16 17:06 | 只看该作者
while((UART3_SR &0x40)==0);
一直卡在这个地方啊?

使用特权

评论回复
地板
yichunshan| | 2016-8-16 17:15 | 只看该作者
先调发送再调接收。
UART3_CR2 =0x0C,把接收中断关掉;
屏蔽while(!(UART3_SR &0x80))和  while((UART3_SR &0x40)==0),反正后面有个delay(1000),也能发送完成了。
然后运行程序,暴力发送,串口助手看去吧,如果这样都没数据,那就是UART寄存器配置错误或者硬件电路问题比如没做线与等

使用特权

评论回复
5
xmshao| | 2016-8-16 17:56 | 只看该作者
确认下硬件线路。

使用特权

评论回复
6
zuo2016|  楼主 | 2016-9-2 08:22 | 只看该作者
问题已找到,发送的线断了

使用特权

评论回复
7
zuo2016|  楼主 | 2016-12-7 13:10 | 只看该作者
结贴了

使用特权

评论回复
8
sgb6688756| | 2016-12-8 22:09 | 只看该作者
往往问题出现在意想不到的地方

使用特权

评论回复
9
zhuotuzi| | 2016-12-8 22:39 | 只看该作者
楼主逗比,线断了,,,,,人才。

使用特权

评论回复
10
wahahaheihei| | 2016-12-8 23:05 | 只看该作者
代码确实是没问题的,应该是其他原因

使用特权

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

本版积分规则

3

主题

18

帖子

0

粉丝