查看: 4268|回复: 6

[已解决] KL27寄存器SIM_COPC不能赋值?

[复制链接]

该用户从未签到

1

主题

4

帖子

0

新手上路

Rank: 1

积分
31
最后登录
1970-1-1
发表于 2017-7-27 10:19:59 | 显示全部楼层 |阅读模式
本帖最后由 dfr3602 于 2017-7-27 10:26 编辑

大家好,使用IAR,想开启KL27的watchdog功能,但是使用下面语句不能改变SIM_COPC的值,是为什么?
SIM->COPC = (uint32_t)0x8A;     
手册里说这个寄存器是written only once after a reset,我在初始化里面SystemInit (void) 已经将给该寄存器赋值的语句(SIM->COPC = (uint32_t)0x00u; )删掉了,但还是不成功,帮忙看看问题出在哪? 谢谢啦      

最佳答案

dfr3602 发表于 2017-7-27 14:04 现在的值一直是0x00,看启动文件里,SystemInit函数对它写操作了,已经屏蔽掉了,但是__iar_program_star ... 我复现了你的现象,应该是这样的,SIM_COPC中有个COPDBGEN位,用于使能 ...
回复

使用道具 举报

  • TA的每日心情
    开心
    1 小时前
  • 签到天数: 2924 天

    连续签到: 15 天

    [LV.Master]伴坛终老

    23

    主题

    4139

    帖子

    82

    金牌会员

    Rank: 6Rank: 6

    积分
    13767
    最后登录
    2025-7-20
    发表于 2017-7-27 11:22:07 | 显示全部楼层
    有程序没?看一下之前操作过此寄存器没,比如在启动文件中。
    不过我是用keil的
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    4

    帖子

    0

    新手上路

    Rank: 1

    积分
    31
    最后登录
    1970-1-1
     楼主| 发表于 2017-7-27 11:28:22 | 显示全部楼层
    watchdog问题.png
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    4

    帖子

    0

    新手上路

    Rank: 1

    积分
    31
    最后登录
    1970-1-1
     楼主| 发表于 2017-7-27 11:30:22 | 显示全部楼层
    方框里是官方初始化程序,把他注释掉后,下面画横线的是自己加的程序,在没有找到其他地方还对COPC寄存器操作了。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    712

    主题

    6371

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    24874
    最后登录
    2025-7-18
    发表于 2017-7-27 13:52:13 | 显示全部楼层
    dfr3602 发表于 2017-7-27 11:30
    方框里是官方初始化程序,把他注释掉后,下面画横线的是自己加的程序,在没有找到其他地方还对COPC寄存器操 ...

    首先看看代码是否在更早的地方已经对该寄存器进行过写操作啊,接着看看COPC寄存器如果不能写入,那到底它现在的值是什么呢?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    4

    帖子

    0

    新手上路

    Rank: 1

    积分
    31
    最后登录
    1970-1-1
     楼主| 发表于 2017-7-27 14:04:15 | 显示全部楼层
    小恩GG 发表于 2017-7-27 13:52
    首先看看代码是否在更早的地方已经对该寄存器进行过写操作啊,接着看看COPC寄存器如果不能写入,那到底它 ...

    现在的值一直是0x00,看启动文件里,SystemInit函数对它写操作了,已经屏蔽掉了,但是__iar_program_start这个函数找不到。

            EXTERN  __iar_program_start
            EXTERN  SystemInit
            EXTERN  init_data_bss
            PUBLIC  __vector_table
            PUBLIC  __vector_table_0x1c
            PUBLIC  __Vectors
            PUBLIC  __Vectors_End
            PUBLIC  __Vectors_Size
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    712

    主题

    6371

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    24874
    最后登录
    2025-7-18
    发表于 2017-7-27 15:04:00 | 显示全部楼层
    dfr3602 发表于 2017-7-27 14:04
    现在的值一直是0x00,看启动文件里,SystemInit函数对它写操作了,已经屏蔽掉了,但是__iar_program_star ...

    我复现了你的现象,应该是这样的,SIM_COPC中有个COPDBGEN位,用于使能cop是否能在debug模式下使能cop,默认是0,即禁止,也就是后面的其寄存器值在debug情况下看到的,都是不对的或者是没有意义的,所以如果你要调试Watchdog,请参考SDK中的cop 例程
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-20 05:05 , Processed in 0.106664 second(s), 29 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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