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

编译失败,总是提示SEGMENT COMBINATION ERROR

[复制链接]
  • 打卡等级:偶尔看看I
  • 打卡总天数:13
  • 最近打卡:2025-02-03 07:57:31

6

主题

10

回帖

112

积分

注册会员

积分
112
发表于 2024-9-2 19:22:41 | 显示全部楼层 |阅读模式
使用了 https://www.stcaimcu.com/forum.p ... 8F%A3DMA&page=1 这位大佬的串口程序,然后一直提示SEGMENT COMBINATION ERROR

又新建了一个工程,然后还是提示这个,小白求助各位大佬帮忙看看

MotorControl.zip

1.31 MB, 下载次数: 61

test.zip

241.7 KB, 下载次数: 58

回复

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:13
  • 最近打卡:2025-02-03 07:57:31

6

主题

10

回帖

112

积分

注册会员

积分
112
发表于 2024-9-2 19:23:50 | 显示全部楼层
编译结果是这样的
Z}MWL$F]}O_U(]%}JXJ]BXJ.png
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:468
  • 最近打卡:2025-06-16 07:06:57
已绑定手机

79

主题

5131

回帖

9138

积分

超级版主

DebugLab

积分
9138
发表于 2024-9-2 22:35:00 | 显示全部楼层
由于连接错误所给段未能连入类型总段,并被忽略
没遇到过这个错误
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:444
  • 最近打卡:2025-06-16 09:26:42
已绑定手机

39

主题

2059

回帖

7070

积分

论坛元老

积分
7070
发表于 2024-9-3 09:52:30 | 显示全部楼层
首先,HUGE模式要参考规格书第5章介绍设置:
截图202409030951153071.jpg
其次,DMA UART1收发中断向量都写成了 50 (DMA_UART1RX中断向量应该是 51):
截图202409030949531395.jpg
回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:536
  • 最近打卡:2025-06-16 08:31:26

31

主题

351

回帖

3789

积分

荣誉版主

积分
3789
发表于 2024-9-3 09:53:05 | 显示全部楼层
本人的理解, 试回答楼主的问题...

*** ERROR L101: SEGMENT COMBINATION ERROR
    SEGMENT: ?PR?IV?50
    MODULE:  .\Objects\UART1.obj (UART1)

根据提示直译看...
  SEGMENT COMBINATION ERROR
就是"段组织错误",
  SEGMENT: ?PR?IV?50
这一句指出: 错误在程序段中的中断矢量表中.
  MODULE:  .\Objects\UART1.obj (UART1)
这是指出问题是出在UART1这个模块中

那么, 再看 UART1模块. 楼主是用的是库函数, (不知是否修改过? 一般最好不要改动.)
其中:

/*---------------------------------------------------------
DMA_UART1TX中断
----------------------------------------------------------*/
void DMA_UART1TX_ISR_Handler(void) interrupt 50  
{
    DMA_UR1T_STA = 0;   //清除中断标志
    SEND_SIZE-=SEND_DMA_SIZE;   //发送数量递减
    SEND_POINT+=SEND_DMA_SIZE;  //发送指针递加
    if(SEND_POINT>=UART1_SEND_BUF_SIZE)SEND_POINT=0;//指针循环调整
    if(SEND_SIZE)   //如果有数据要发出
    {
        SEND_DMA_SIZE = (SEND_APP_WR_ADDR>SEND_POINT)? SEND_APP_WR_ADDR-SEND_POINT : UART1_SEND_BUF_SIZE-SEND_POINT;
        DMA_UR1T_AMTH = (SEND_DMA_SIZE-1)>>8;                //字节数
        DMA_UR1T_AMT  = (SEND_DMA_SIZE-1);                       //字节数
        DMA_UR1T_TXAH = (u16)(&SEND_BUF[SEND_POINT])>>8;     //地址
        DMA_UR1T_TXAL = (u16)(&SEND_BUF[SEND_POINT]);            //地址
        DMA_UR1T_CR   = 0XC0;                                //启动DMA
    }
    else{   //没有数据要发出,恢复到默认状态
        SEND_ENDBZ = 1;
        SEND_DMA_SIZE = SEND_POINT = SEND_APP_WR_ADDR = 0;  //此句非必要
    }
}

/*---------------------------------------------------------
DMA_UART1RX中断
----------------------------------------------------------*/
void DMA_UART1RX_ISR_Handler(void) interrupt 50  
{
    DMA_UR1R_STA = 0;   //清除中断标志
    DMA_UR1R_CR = 0XA1; //开DMA接收
}

发送中断和接收中断, 用了同一个中断矢量号 50
这与错误提示相吻合, 估计问题是出在这里.

楼主可从这里着手解决之...
一般可以用一个中断服务程序, 在其中根据发送中断和接收中断的不同标志位, 来分别做处理...

仅供参考....

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:13
  • 最近打卡:2025-02-03 07:57:31

6

主题

10

回帖

112

积分

注册会员

积分
112
发表于 2024-9-3 10:02:24 | 显示全部楼层
浦江*** 发表于 2024-9-3 09:53
本人的理解, 试回答楼主的问题...

*** ERROR L101: SEGMENT COMBINATION ERROR

收到!感谢您的解答,成功编译通过,不知道这个中断号啥时候变了
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:13
  • 最近打卡:2025-02-03 07:57:31

6

主题

10

回帖

112

积分

注册会员

积分
112
发表于 2024-9-3 10:03:15 | 显示全部楼层
乘风*** 发表于 2024-9-3 09:52
首先,HUGE模式要参考规格书第5章介绍设置:

其次,DMA UART1收发中断向量都写成了 50 (DMA_UART1RX中断向 ...

感谢您的解答!成功解决问题
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:358
  • 最近打卡:2025-06-15 18:40:05
已绑定手机

21

主题

488

回帖

855

积分

高级会员

积分
855
发表于 2024-9-3 10:09:13 | 显示全部楼层
第一次遇到这情况,我也学习到了
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:467
  • 最近打卡:2025-06-15 22:44:24
已绑定手机

19

主题

3231

回帖

5281

积分

论坛元老

积分
5281
发表于 2024-9-3 12:43:43 来自手机 | 显示全部楼层
中断号错也会报错啊,才知道
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:356
  • 最近打卡:2025-06-16 00:20:26

4

主题

66

回帖

1189

积分

金牌会员

积分
1189
发表于 2024-9-15 22:32:21 | 显示全部楼层
学习了。
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-6-16 18:05 , Processed in 0.331190 second(s), 106 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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