不能写TIMER1_CTRL_REG

⚠️
大家好. .感谢来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台的过程中,它将提供更好的功能,并包含在主对话网站。所有的帖子和账号已经迁移。我们现在只接受新论坛的流量-请发布任何新的帖子在//www.xmece.com/support.我们会在接下来的几天修复bug /优化搜索和标记。
5个职位/ 0个新职位
最后发表
lecarter190
离线
最后看到:5个月2天前
加入:2020-02-27 18:00
不能写TIMER1_CTRL_REG

你好,

我正在使用PRO开发板和DA14531MOD子板修改基本示例。

我试图附上问题的屏幕截图,但不知道怎么做。我正在尝试使用SetWord32(TIMER1_CTRL_REG,值)写入TIMER1_CTRL_REG,其中值= 0x126400。反汇编窗口显示指令STR r0,[r1,#0x00],其中r0 = 0x00012640 abd r1 = 0x50004000。但是内存位置0x50004000从0开始没有改变。

当我运行这个命令时,内存位置0x50004000仍然是0,并且定时器在启用时不运行。我还尝试了value = 0x1A640,选择了sys clk。

我将感激任何洞察为什么寄存器没有改变时,写。

谢谢,

拉里

设备:
MHv_Dialog
离线
最后看到:2周3天前
工作人员
加入:15 2013-12-06
你好拉里,

你好拉里,

您似乎试图将32位写入16位宽的寄存器(详细信息请参见数据表342)。试着用SetWord16 ()相反,o)

直接写入DA14531的寄存器很少是实现任何事情的最佳方法。请查看SDK的peripheral_examples文件夹,以获得演示计时器使用的示例。

你也可以看看如何才能做到使用app_easy_timer(强调简单)-检查“开始使用SDK6”教程的第9节:http://lpccs-docs.dialog-semiconductor.com/Tutorial_SDK6/index.html

/ MHv

lecarter190
离线
最后看到:5个月2天前
加入:2020-02-27 18:00
谢谢你的回复

谢谢你的回复,但是,寄存器是17位,sdk_driver:timer1.c中的FW使用SetWord32。我也尝试过只写低16位,结果是一样的。

以下是timer1.c的正确内容,供您参考。

Void timer1_count_config(timer1_count_options_t *count_options, timer1_count_handler_t callback)

ASSERT_WARNING (count_options - > reload_val < = TIM1_RELOAD_MAX);

Uint32_t temp = (count_options->input_clk << 15u) + (count_options->free_run << 14u) +
(count_options->irq_mask << 13u) + (count_options->count_dir << 12u) +
(count_options - > reload_val);

/*重置当前定时器值。*/
//注:以下操作顺序不变!!
SetBits32 (TIMER1_CTRL_REG TIMER1_CLK_EN TIM1_CLK_ON);
SetBits32 (TIMER1_CTRL_REG TIMER1_USE_SYS_CLK TIM1_CLK_SRC_SYS);
SetBits32 (TIMER1_CTRL_REG TIMER1_COUNT_DOWN_EN count_options - > count_dir);
SetBits32 (TIMER1_CTRL_REG TIMER1_ENABLE TIM1_OFF);

/*写入提供的配置。*/
SetWord32 (TIMER1_CTRL_REG、临时);

/*注册提供的回调函数。*/
timer1_count_register_callback(回调);

我不能使用简易计时器,我需要比10毫秒更细的分辨率。

peripheral_examples文件夹并没有显示如何使用timer1,只显示了我所发现的计时器0和2。

出于许多原因,我更喜欢直接写入寄存器,我参考了您提供的直接写入寄存器的sdk_driver代码。

这个问题归结为我在最初的文章中引用的指令——反汇编窗口显示指令STR r0,[r1,#0x00],其中r0 = 0x00012640和r1 = 0x50004000。但是内存位置0x50004000从0开始没有改变。

是否有任何内存保护或这样的,将阻止16位或32位写入该内存位置?

拉里

lecarter190
离线
最后看到:5个月2天前
加入:2020-02-27 18:00
查看图10

查看数据表的图10,Timer1似乎位于与计时器0和2不同的域中。在最简单的例子中,Timer1是否可能断电?如果是,在这个例子中,我在哪里以及如何打开它?

谢谢,

拉里

lecarter190
离线
最后看到:5个月2天前
加入:2020-02-27 18:00
知道了,需要清理

收到,需要清除PMU_CTRL_REG中的TIM_SLEEP位

拉里