完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
大家好
最后我收到了一个发现板(装有SPC56EL60L3) )并安装了通用调试器,以尝试我的一些代码。 我遇到了第一个尝试设置计时器的问题。 我用这个代码: STM.CR.B.CPS = PRESCALER; / *预分频值。* / STM.CR.B.FRZ = 1; / *允许冻结在调试中停止计数器。 * / STM.CR.B.TEN = 1; / *启用计数器。 * / 我设法调试并停止应用程序,但我是这个领域的新手,可能有一些我没有看到的错误。 我注意到的第一件事是代码没有按照写入的顺序执行。用debbuger查看PC寄存器,似乎在编译阶段指令被“扰乱”。第二条指令是第一条执行的(我正在逐步调试)。这可能吗? 第二件事是指令STM.CR.B.CPS = PRESCALER;该计划不会继续。我必须按ctrl + F5才能停止它,然后我看到程序在未处理的异常中被阻止。 有人可以在代码片段中看到问题。阅读文档,我了解到,在使用向导生成器之后,我可以使用自动生成的内存映射来修改寄存器值。它是否正确?或者我错误地理解SPC5工作室是如何工作的? 谢谢, 伊万 #STM-寄存器 以上来自于谷歌翻译 以下为原文 Hallo everyone, finally I have received a discovery board (with a SPC56EL60L3 mounted ) and installed the universal debugger, to try some of my code. I ran in the first problem trying to set a timer. I use this code: STM.CR.B.CPS = PRESCALER; /* Prescale value.*/ STM.CR.B.FRZ = 1; /* Allows Freeze for stop counter in debug. */ STM.CR.B.TEN = 1; /* Enable the counter. */ I manage to debug and stop the application, but I am new in this field and problably there is some error that I do not see. The first thing that I note, is that the code is not executed in the order written. Looking the PC register with the debbuger, it seems that the instructions are ''scrambled'' in the compiling phase. The second instruction is executed beforre the first (I am debugging step by step).Is it possible? The second thing is that after the instruction STM.CR.B.CPS = PRESCALER; the program doesn't continue. I must press ctrl+F5 to stop it and then I see that the program is blocked on an unhandled exception. Someone can see the problem in the snippet of code. Reading the documentation, I understood that, after using the wizard generator, I can use the memory mapping autogenerated to modify register values. Is this correct? Or I understood wrongly how SPC5 studio works? Thank you, Ivan #stm-registers |
|
相关推荐
7个回答
|
|
你好伊万,
它是未处理的异常,因为编译器可以优化位域设置 您是否尝试使用掩码直接设置寄存器? 建议不要使用位域。 最好的祝福 二万 以上来自于谷歌翻译 以下为原文 Hello Ivan , it is unhandled exception because the compiler can optimize bitfield settings
Did you try to set directly the register with masks ? it is recommended not to use the bitfield.
Best Regards Erwan |
|
|
|
你好,Erwan,
我尝试了你的解决方案并且有效。非常感谢你。 作为旁注,我试图将引脚设置为1 并执行此指令,但现在我担心,即使我没有例外,我设置了错误的内存地址。 如果这不正确(从您的aswer和调试器看来),何时使用位域?我可以使用它来读取寄存器而不使用掩码吗? 问候, 伊万 以上来自于谷歌翻译 以下为原文 Hello Erwan, I tried your solution and it worked. Thank you very much. As a side note, I tried to set a pin at 1
and this instruction is executed, but now I fear that, even if I have no exception, I am setting the wrong memory address. In case this is not correct (as it seems from your aswer and from the debugger), when does the bitfield is used? Can I use it to read registers without using masks? Regards, Ivan |
|
|
|
你好伊万,
1)写作, 在定义的地址处仅设置1个位域即可 建议不要在同一地址设置3个连续的位域。一些编译器可以优化汇编程序例程并生成未处理的异常 2)阅读,你可以使用你想要的任何东西。 3)无论如何,您可以查看SFR视图 最好的祝福 二万 并执行此指令,但现在我担心,即使我没有例外,我设置了错误的内存地址。 以上来自于谷歌翻译 以下为原文 Hello Ivan , 1) for writing , Setting only 1 bitfield at a defined address is OK
Setting 3 successive bitfields at the same address is not recommended. Some compilers can optimize assembler routine and generate an unhandled exception
2) for reading , you can use whatever you want. 3) Anyway , you can check in the SFR View Best Regards Erwan
and this instruction is executed, but now I fear that, even if I have no exception, I am setting the wrong memory address. |
|
|
|
好的,现在我明白了。
非常感谢你提供的信息, 伊万 以上来自于谷歌翻译 以下为原文 Ok, now I understand. Thank you very much for the info, Ivan |
|
|
|
早上好,
对不起双重帖,但我不知道今天的问题是否与此讨论有关。 我尝试了大量的寄存器来掌握安装在我的发现板上的SPC56EL60L3的基本要素。 我插入了这个试用配置: 为了访问和配置(现在所有位字段都为0),CRC模块。 微观给了我一个斧头。 我注意到的奇怪之处在于,使用SFR视图,我无法监视CRC寄存器。在值列中,我看到了??????????而不是一个值。 阅读手册我发现CRC位字段只能在配置模式下修改。 可能是这个问题?在这种情况下,我该如何进入配置模式?我搜索了手册,但我没有找到具体的部分(可能是我误解了)。 谢谢, 伊万 以上来自于谷歌翻译 以下为原文 Good morning, sorry for the double post, but I don't know if the problem of today is related with this discussion. I tried vairous registers to grasp the essentials of the SPC56EL60L3 mounted on my discovery board. I inserted this trial configuration:
in order to access and configure (for now with all bit fields to 0), the CRC module. The micro give me an axception. The strange thing that I note is that, using SFR view, I cannot monitor the CRC register. In the columns of values I see ?????????? instead of a value. Reading the manual I found that CRC bit field are modifyable only in configuration mode. Could be this the problem? In that case, how can I enter configuration mode? I searched the manual, but I didn't found the specific section (probably I misunderstood it). Thank you, Ivan |
|
|
|
你好伊万,
对不起,我迟到了 有时很难浏览my.st.com上的非解决帖子。 您需要启用关联的PCTL。 对于CRC,您需要启用PCTL 58。 你应该看到价值而不是???? (不确定)。 最好的祝福 二万 以上来自于谷歌翻译 以下为原文 Hello Ivan , Sorry for my late answer Sometimes it is difficult to browse on Non-solved posts on my.st.com. You need to enable the associated PCTL. For CRC, you need to enable PCTL 58.
you should see the value and not ???? (undefined). Best regards Erwan |
|
|
|
谢谢Erwan的回答。
我设法激活CRC模块,现在我更好地了解外部设备。 问候, 伊万 以上来自于谷歌翻译 以下为原文 Thanks for the answer Erwan. I managed to activate the CRC module and now I better understand the external peripherals. Regards, Ivan |
|
|
|
只有小组成员才能发言,加入小组>>
请教:在使用UDE STK时,单片机使用SPC560D30L1,在配置文件怎么设置或选择?里面只有SPC560D40的选项
2733 浏览 1 评论
3241 浏览 1 评论
请问是否有通过UART连接的两个微处理器之间实现双向值交换的方法?
1810 浏览 1 评论
3650 浏览 6 评论
6038 浏览 21 评论
1339浏览 4评论
201浏览 3评论
对H747I-DISCO写程序时将CN2的st-link复用为usart1,再次烧录时无法检测到stlink怎么解决?
350浏览 2评论
STM32G474RE芯片只是串口发个数据就发烫严重是怎么回事?
444浏览 2评论
STM32处理增量式编码器Z信号如何判断中断是正转的还是反向转的?
274浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-24 05:26 , Processed in 1.079779 second(s), Total 60, Slave 54 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号