Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Submit feedback
    • Contribute to GitLab
  • Sign in
M
mfang2.0
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 92
    • Issues 92
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge Requests 1
    • Merge Requests 1
  • CI / CD
    • CI / CD
    • Pipelines
    • Jobs
    • Schedules
  • Analytics
    • Analytics
    • CI / CD
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Collapse sidebar
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
  • 魔方Web开发组
  • mfang2.0
  • Issues
  • #787

Closed
Open
Opened Dec 19, 2023 by 宋永裕@songyongyu💬
  • Report abuse
  • New issue
Report abuse New issue

[Bug] 客诉GPIO复位时导致界面全部复位

现象

客户工程:FM33LC046N, PD10配置为OUTPUT,进行复位操作时,封装视图上所有引脚都被复位了。

分析

后台抛出异常

fmsh-mfang-django    | --------配置Chip引脚参数configPin------------
fmsh-mfang-django    |  PinNum=49, GPIOMode=DISABLE, Peripheral=None, FunPin=None, PinConfig=True
fmsh-mfang-django    | ERROR:django.request:Internal Server Error: /project/set_pin_func
fmsh-mfang-django    | Traceback (most recent call last):
fmsh-mfang-django    |   File "/usr/local/lib/python3.8/site-packages/django/core/handlers/exception.py", line 34, in inner
fmsh-mfang-django    |     response = get_response(request)
fmsh-mfang-django    |   File "/usr/local/lib/python3.8/site-packages/django/core/handlers/base.py", line 115, in _get_response
fmsh-mfang-django    |     response = self.process_exception_by_middleware(e, request)
fmsh-mfang-django    |   File "/usr/local/lib/python3.8/site-packages/django/core/handlers/base.py", line 113, in _get_response
fmsh-mfang-django    |     response = wrapped_callback(request, *callback_args, **callback_kwargs)
fmsh-mfang-django    |   File "/usr/local/lib/python3.8/site-packages/django/views/generic/base.py", line 71, in view
fmsh-mfang-django    |     return self.dispatch(request, *args, **kwargs)
fmsh-mfang-django    |   File "/usr/local/lib/python3.8/site-packages/django/views/generic/base.py", line 97, in dispatch
fmsh-mfang-django    |     return handler(request, *args, **kwargs)
fmsh-mfang-django    |   File "/usr/src/app/project/views.py", line 501, in post
fmsh-mfang-django    |     ret = ChipEntity.configPin(int(pinnum), mode, instance, function, PinConfig=True)
fmsh-mfang-django    |   File "/usr/src/app/project/ChipObjectManager/ChipObject.py", line 1023, in configPin
fmsh-mfang-django    |     func_name = arr[1]
fmsh-mfang-django    | IndexError: list index out of range
fmsh-mfang-django    | [19/Dec/2023 12:42:57] "POST /project/set_pin_func HTTP/1.1" 500 145
fmsh-mfang-django    | LoadFromRedis: project:1736969842490650626

关联代码

        if PinConfig and (mode in [IO_INPUT, IO_OUTPUT, IO_RESET]):
            if pin_obj.getPinAssociated() in ["RCC", "CMU"] and pin_obj.config is not None:
                # 如果外设配置中XTHF、XTLF开启,时钟树中选用了他们之一
                arr = pin_obj.config.split("_")
                peri_name = arr[0]
                func_name = arr[1]
                clockObj = ClockTreeHelper(self.project_id)
                if func_name in ["XTHI", "XTHO", "XT32KI", "XT32KO"] and clockObj.ClockIsUsed(func_name):
                    return { "ret": False, "message": "%s所开启的外部时钟源已被时钟树选用,无法被复位,请调整时钟树后再试." % instance }
                else:
                    # 同步到时钟树
                    clockObj.Close_XTLF_XTHF(func_name) 

原因

PD10并未配置为XTLF,但pin_obj.getPinAssociated() 居然得到了RCC对象,这可能是历史工程造成的。

解决方案

添加try语句捕获异常不处理;

Assignee
Assign to
None
Milestone
None
Assign milestone
Time tracking
None
Due date
None
3
Labels
已跟进 微信群客户反馈 测试中
Assign labels
  • View project labels
Reference: fmsh-web-develop/mfang2.0#787