找回密码
 立即注册
查看: 2995|回复: 9

STC8G1K08的串口

[复制链接]

该用户从未签到

11

主题

12

回帖

111

积分

注册会员

积分
111
发表于 2023-3-9 16:39:01 | 显示全部楼层 |阅读模式
请教下,用STC-ISP6.91里的范例程序生成串口2的代码,波特率115200,在while里发送0x5a,用ISP下载/编程,

ISP下载/编程

ISP下载/编程

串口助手可以收到

下载/编程后收到数据

下载/编程后收到数据

但是将目标单片机设为仿真芯片,进入仿真状态,串口助手收不到数据了,也不能进入中断。
用论坛里下载的STC8G-STC8H-LIB-DEMO-CODE-20220509里的07-串口2中断模式与电脑收发测试进行测试,

论坛里的demo

论坛里的demo

切换端口为 UART2_SW_P10_P11;分别修改波特率为9600和115200测试,可以进入接收中断,也可以进入发送函数,

进入发送函数

进入发送函数

发送的数据

发送的数据

但是串口助手收不到数据,并且收到的数据不对,像是波特率不对。

收到数据不对

收到数据不对

怎么排查?或者哪里的操作不对?


程序里的设置


仿真收不到数据

仿真收不到数据

不能进中断

不能进中断

U口初始化

U口初始化

main函数

main函数

发送函数

发送函数

07-串口2中断模式与电脑收发测试.zip

269.93 KB, 下载次数: 44

STC8G_Uart2.zip

23.82 KB, 下载次数: 50

回复 送花

使用道具 举报

  • TA的每日心情
    奋斗
    6 小时前
  • 签到天数: 124 天

    [LV.7]常住居民III

    26

    主题

    1262

    回帖

    3935

    积分

    论坛元老

    积分
    3935
    发表于 2023-3-9 17:15:43 | 显示全部楼层
    库函数版本程序里面IO口初始化程序被你屏蔽了,STC8系列单片机除了P3.0,P3.1外其它IO口默认是高阻输入模式,不进行初始化是无法输出信号的。
    1.png

    串口切换到P1.0,P1.1后,至少需要对P1.1口进行初始化,比如设置为准双向模式。




    寄存器版本的程序,从仿真界面看你应该使用了软件模拟仿真,而不是硬件仿真。请确认仿真设置,只有硬件仿真才能输出数据。

    该用户从未签到

    11

    主题

    12

    回帖

    111

    积分

    注册会员

    积分
    111
     楼主| 发表于 2023-3-9 17:37:12 | 显示全部楼层
    谢谢。修改程序,初始化p1.0,p1.1

    void        GPIO_config(void)
    {
            GPIO_InitTypeDef        GPIO_InitStructure;                //½á¹¹¶¨Òå

            GPIO_InitStructure.Pin  = GPIO_Pin_0 | GPIO_Pin_1;                //Ö¸¶¨Òª³õʼ»¯µÄIO, GPIO_Pin_0 ~ GPIO_Pin_7
            GPIO_InitStructure.Mode = GPIO_OUT_OD;//GPIO_PullUp;        //Ö¸¶¨IOµÄÊäÈë»òÊä³ö·½Ê½,GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PP
            GPIO_Inilize(GPIO_P1,&GPIO_InitStructure);        //³õʼ»¯
    }
    收到的数据不对,像波特率不对
    12.png
    串口助手收到的数据也不是发送的
    13.png

    07-串口2中断模式与电脑收发测试.rar

    182.51 KB, 下载次数: 49

  • TA的每日心情
    奋斗
    6 小时前
  • 签到天数: 124 天

    [LV.7]常住居民III

    26

    主题

    1262

    回帖

    3935

    积分

    论坛元老

    积分
    3935
    发表于 2023-3-9 18:20:42 | 显示全部楼层
    jindizhiwa 发表于 2023-3-9 17:37
    谢谢。修改程序,初始化p1.0,p1.1

    void        GPIO_config(void)



    我查了一下你的代码,发现串口2的发送函数被修改了,只要改回原来的 TX2_Buffer[COM2.TX_write] = dat; 就正常了。
    1.png

    该用户从未签到

    550

    主题

    9218

    回帖

    1万

    积分

    管理员

    积分
    13946
    发表于 2023-3-9 18:24:05 | 显示全部楼层

    该用户从未签到

    11

    主题

    12

    回帖

    111

    积分

    注册会员

    积分
    111
     楼主| 发表于 2023-3-10 08:41:41 | 显示全部楼层
    谢谢。调试的时候发现没发出数据,所以参照寄存器改的。再请教下,S2BUF = dat;在寄存器程序里可以,为嘛在库函数里不行了?

    该用户从未签到

    11

    主题

    12

    回帖

    111

    积分

    注册会员

    积分
    111
     楼主| 发表于 2023-3-10 09:11:38 | 显示全部楼层
    谢谢,uart2可以收发了。另再请教下,Uart3.hex烧入芯片后没有反应,我用的P1.6和P1.7做串口3,程序里要怎么设置?看程序里用的P0.0 P0.1,  或者P5.0 P5.1.

    电路图

    电路图

    该用户从未签到

    11

    主题

    12

    回帖

    111

    积分

    注册会员

    积分
    111
     楼主| 发表于 2023-3-10 09:18:33 | 显示全部楼层
    看了手册,STC8G只有串口1和2,应该用串口1测试

    1.png
    2.png
  • TA的每日心情
    奋斗
    2023-12-5 13:56
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    12

    主题

    245

    回帖

    1532

    积分

    超级版主

    积分
    1532
    发表于 2023-3-10 15:39:36 | 显示全部楼层
    官网的串口助手也是非常好用的,可以测试看看
    串口助手1.png
    串口助手2.png
    串口助手3.png
    串口助手4.png

    电话:0513-55012946 QQ:2195591714  微信:  19952583740
  • TA的每日心情
    奋斗
    6 小时前
  • 签到天数: 124 天

    [LV.7]常住居民III

    26

    主题

    1262

    回帖

    3935

    积分

    论坛元老

    积分
    3935
    发表于 2023-3-10 17:06:03 | 显示全部楼层
    jindizhiwa 发表于 2023-3-10 08:41
    谢谢。调试的时候发现没发出数据,所以参照寄存器改的。再请教下,S2BUF = dat;在寄存器程序里可以,为嘛在 ...

    如果直接往S2BUF写入发送数据的话,需要等待发送完成后才能再写入第二个要发送的数据,不然没发完就写入新的数据就会把上一个数据覆盖掉。
    库函数使用的是缓冲区队列的方法,将需要发送的数据先装入缓冲区里,然后在发送中断里一个个进行发送。
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-4-26 15:49 , Processed in 0.085345 second(s), 67 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表