找回密码
 立即注册
查看: 448|回复: 8

为啥我的串口不能发数据 | 已解决

[复制链接]

该用户从未签到

7

主题

15

回帖

141

积分

注册会员

积分
141
发表于 2023-12-4 20:04:59 | 显示全部楼层 |阅读模式
芯片stc8h4k64TL。
不使用中断方式来发送和接收。
目前发数据都不行
void Uart3Init(unsigned long BaudRate)
{

    GPIO_InitTypeDef        GPIO_InitStructure;                //结构定义
    COMx_InitDefine                COMx_InitStructure;                                        //结构定义
    UART3_SW(UART3_SW_P50_P51);        
        GPIO_InitStructure.Pin  = UART3_RX_PIN | UART3_TX_PIN;                //指定要初始化的IO, GPIO_Pin_0 ~ GPIO_Pin_7
        GPIO_InitStructure.Mode = GPIO_PullUp;        //指定IO的输入或输出方式,GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PP
        GPIO_Inilize(GPIO_P5,&GPIO_InitStructure);        //初始化


        COMx_InitStructure.UART_Mode      = UART_8bit_BRTx;        //模式, UART_ShiftRight,UART_8bit_BRTx,UART_9bit,UART_9bit_BRTx
        COMx_InitStructure.UART_BRT_Use   = BRT_Timer3;                        //选择波特率发生器, BRT_Timer1, BRT_Timer2 (注意: 串口2固定使用BRT_Timer2)
        COMx_InitStructure.UART_BaudRate  = BaudRate;                        //波特率, 一般 110 ~ 115200
        COMx_InitStructure.UART_RxEnable  = ENABLE;                                //接收允许,   ENABLE或DISABLE
        COMx_InitStructure.BaudRateDouble = DISABLE;                        //波特率加倍, ENABLE或DISABLE
        UART_Configuration(UART3, &COMx_InitStructure);                //初始化串口1 UART1,UART2,UART3,UART4

        
}
void Senddata(unsigned d)
{
    while(!TI3){
        ;
    }
    CLR_TI3();
    S3BUF = d;
}
void main(void)
{
    unsigned char d = 0x31;
        EAXSFR();                /* 扩展寄存器访问使能 */
    Uart3Init(UART3_BaudRate);

    while(1)
    {
        Senddata(d);
        delay_ms(200);
        delay_ms(200);
        delay_ms(200);
        delay_ms(200);
        delay_ms(200);
        delay_ms(200);
    }        
}



回复 送花

使用道具 举报

该用户从未签到

7

主题

15

回帖

141

积分

注册会员

积分
141
 楼主| 发表于 2023-12-4 20:22:03 | 显示全部楼层
不好意思。可以了。顺序错了
回复 支持 反对 送花

使用道具 举报

  • TA的每日心情
    开心
    2024-3-26 16:55
  • 签到天数: 1 天

    [LV.1]初来乍到

    0

    主题

    1

    回帖

    12

    积分

    新手上路

    积分
    12
    发表于 2023-12-18 17:31:17 | 显示全部楼层
    那么,改好后的程序是什么样呢?不要烂尾啊。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    慵懒
    28 分钟前
  • 签到天数: 152 天

    [LV.7]常住居民III

    10

    主题

    283

    回帖

    1014

    积分

    金牌会员

    积分
    1014
    发表于 2023-12-18 19:31:50 | 显示全部楼层
    你可以参考stc提供的示例程序检察下哪里出问题了
    自信就会温和,温和就会坚定!
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    7

    主题

    15

    回帖

    141

    积分

    注册会员

    积分
    141
     楼主| 发表于 2023-12-29 11:47:36 | 显示全部楼层
    guduxue 发表于 2023-12-18 17:31
    那么,改好后的程序是什么样呢?不要烂尾啊。

    就是Senddata那个函数里面的顺序错了啊。要先把数据放S3BUF里面后再去等待发送完成
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 01:51
  • 签到天数: 131 天

    [LV.7]常住居民III

    4

    主题

    234

    回帖

    882

    积分

    高级会员

    积分
    882
    发表于 2023-12-29 16:06:23 | 显示全部楼层
    我的屠龙刀开发板在定时器中断里调用Printf可以向电脑发送数据,但是在主函数里卡在哪里也不知道怎么回事。
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    7

    主题

    15

    回帖

    141

    积分

    注册会员

    积分
    141
     楼主| 发表于 2023-12-29 16:53:58 | 显示全部楼层
    lzl1okOK 发表于 2023-12-29 16:06
    我的屠龙刀开发板在定时器中断里调用Printf可以向电脑发送数据,但是在主函数里卡在哪里也不知道怎么回事。 ...

    中断嵌套了。不要在中断里面调用printf
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 01:51
  • 签到天数: 131 天

    [LV.7]常住居民III

    4

    主题

    234

    回帖

    882

    积分

    高级会员

    积分
    882
    发表于 2023-12-29 17:07:10 | 显示全部楼层
    爱晴海玩偶 发表于 2023-12-29 16:53
    中断嵌套了。不要在中断里面调用printf

    不在中断里调用,写在主函数里会卡住,用中断可以输出
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 01:51
  • 签到天数: 131 天

    [LV.7]常住居民III

    4

    主题

    234

    回帖

    882

    积分

    高级会员

    积分
    882
    发表于 2023-12-29 21:17:40 | 显示全部楼层
    爱晴海玩偶 发表于 2023-12-29 16:53
    中断嵌套了。不要在中断里面调用printf

    问题已经找到
    回复 支持 反对 送花

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

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

    GMT+8, 2024-5-13 00:52 , Processed in 0.064913 second(s), 60 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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