[STM8] 大神帮我分析一下

[复制链接]
1202|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寄存器配置错误或者硬件电路问题比如没做线与等
xmshao 发表于 2016-8-16 17:56 | 显示全部楼层
确认下硬件线路。
 楼主| zuo2016 发表于 2016-9-2 08:22 | 显示全部楼层
问题已找到,发送的线断了
 楼主| zuo2016 发表于 2016-12-7 13:10 | 显示全部楼层
结贴了
sgb6688756 发表于 2016-12-8 22:09 来自手机 | 显示全部楼层
往往问题出现在意想不到的地方
zhuotuzi 发表于 2016-12-8 22:39 | 显示全部楼层
楼主逗比,线断了,,,,,人才。
wahahaheihei 发表于 2016-12-8 23:05 | 显示全部楼层
代码确实是没问题的,应该是其他原因
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

18

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部