打印

关于SysTick 定时器的寄存器而引出的问题

[复制链接]
4710|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lgj|  楼主 | 2009-4-5 13:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式


1、在“STM32F10x参考手册”中提都不提,至少应该加一句“请参见Cortex-M3权威指南”吧。
2、在《STM32F10x参考手册》中有“6.3.1 时钟控制寄存器(RCC_CR) ”说明了寄存器的名称;我在keil MDK的软仿真的“watch & call stack window”窗口中可用RCC_CR观察;
但SystemTick的寄存器名称是什么?SysTick_ CTRL或者ST_ CTRL_STAT都不对,Cortex-M3权威指南中也没有说;
3、在《STM32F10x参考手册》中有RCC_CR复位值: 0x000 XX83,有
            位19     CSSON:时钟安全系统使能
        由软件置’1’或清零以使能时钟监测器。
        0:时钟监测器关闭;
                  1:如果外部4-25MHz时钟就绪,时钟监测器开启。
   而《Cortex-M3权威指南》中COUNTFLAG是在CTRL寄存器的哪一位都没说,太不严谨了吧
4、《Cortex-M3权威指南》中“通过检查校准寄存器的位[31](NOREF),可以判定是否有可用的外部时钟源,而芯片厂商则必须把该引线连接至正确的电平。”没明确说明是否为1表示有外部时钟源

沙发
lgj|  楼主 | 2009-4-5 13:27 | 只看该作者

关于COUNTFLAG

在“stm32f10x_map.h”中的
#define  SysTick_CTRL_COUNTFLAG    ((u32)0x00010000)        /* Count Flag */
才知道是位16
累啊!!!

使用特权

评论回复
板凳
lgj|  楼主 | 2009-4-5 13:53 | 只看该作者

原来关于SysTick的说明在第8章和第13章各半,佩服!!!

使用特权

评论回复
地板
zhangxk| | 2009-4-8 09:07 | 只看该作者

同感

看遍了Datasheet和Reference Manual,就是没找到SysTick寄存器的说明,而且**里讲到的寄存器都是给出的偏移地址,没有直接地址,不明白ST是怎么想的?难道要在他们提供的硬件库里查找?

开始我是想用Luminary的CM3芯片,也看完了资料,讲的都很清楚,因为网上看到的关于STM32的讨论更多,就选择了STM32,没想到实际设计的时候居然在资料里找不到寄存器的地址,有点莫名其妙。

使用特权

评论回复
5
特呆禅师| | 2009-4-10 17:54 | 只看该作者

看固件库

可以查固件库啊!专门有一章是SYSTICK的。
我觉得习惯使用固件库的话,开发会变得很容易了,基本很上就不用去查技术手册中每个寄存器各位的含义了,因为它参数说明都很清晰了。
而且,它每个外设还都提供示例程序了,模仿一下就能改出你需要的代码了。

使用特权

评论回复
6
grant_jx| | 2009-4-11 09:56 | 只看该作者

以前有人列出来过,我收藏过

copy下一吧:

STM32中用到的Cortex-M3寄存器说明 
   在STM32中用到了Cortex-M3定义的三组寄存器,有关这三组寄存器的说明不在STM32的技术手册中,需要参考ARM公司发布的Cortex-M3 Technical Reference Manual (r2p0)。 
   在STM32的固件库中定义了三个结构体与这三个寄存器组相对应,这三个结构体与ARM手册中寄存器的对应关系如下: 

   1)、NVIC寄存器组 
       STM32的固件库中有如下定义: 
       typedef struct 
       { 
         vu32 ISER[2]; 
         u32 RESERVED0[30]; 
         vu32 ICER[2]; 
         u32 RSERVED1[30]; 
         vu32 ISPR[2]; 
         u32 RESERVED2[30]; 
         vu32 ICPR[2]; 
         u32 RESERVED3[30]; 
         vu32 IABR[2]; 
         u32 RESERVED4[62]; 
         vu32 IPR[11]; 
       } NVIC_TypeDef; 

       它们对应ARM手册中的名称为 
       ISER = Interrupt Set-Enable Registers 
       ICER = Interrupt Clear-Enable Registers 
       ISPR = Interrupt Set-Pending Register 
       ICPR = Interrupt Clear-Pending Register 
       IABR = Active Bit Register 
       IPR = Interrupt Priority Registers 

       每个寄存器有240位,以Interrupt Set-Enable Registers说明,ISER[0]对应中断源0~31,ISER[1]对应中断源32~63,STM32只有60个中断源,所以没有ISER[2:7]。 

       参考STM32技术参考手册中的中断向量表,中断源的位置为: 
       位置0 - WWDG = Window Watchdog interrupt 
       位置1 - PVD = PVD through EXTI Line detection interrupt 
       位置2 - TAMPER = Tamper interrupt 
       ...... 
       位置58 - DMA2_Channel3 = DMA2 Channel3 global interrupt 
       位置59 - DMA2_Channel4_5 = DMA2 Channel4 and DMA2 Channel5 global interrupts 

  
   2)、系统控制寄存器组 
       STM32的固件库中有如下定义: 
       typedef struct 
       { 
         vuc32 CPUID; 
         vu32 ICSR; 
         vu32 VTOR; 
         vu32 AIRCR; 
         vu32 SCR; 
         vu32 CCR; 
         vu32 SHPR[3]; 
         vu32 SHCSR; 
         vu32 CFSR; 
         vu32 HFSR; 
         vu32 DFSR; 
         vu32 MMFAR; 
         vu32 BFAR; 
         vu32 AFSR; 
       } SCB_TypeDef; /* System Control Block Structure */ 
        
       它们对应ARM手册中的名称为 
       CPUID = CPUID Base Register 
       ICSR = Interrupt Control State Register 
       VTOR = Vector Table Offset Register 
       AIRCR = Application Interrupt/Reset Control Register 
       SCR = System Control Register 
       CCR = Configuration Control Register 
       SHPR = System Handlers Priority Register 
       SHCSR = System Handler Control and State Register 
       CFSR = Configurable Fault Status Registers 
       HFSR = Hard Fault Status Register 
       DFSR = Debug Fault Status Register 
       MMFAR = Mem Manage Address Register 
       BFAR = Bus Fault Address Register 
       AFSR = Auxiliary Fault Status Register 

   3)、系统时钟寄存器组 
       STM32的固件库中有如下定义: 
       typedef struct 
       { 
         vu32 CTRL; 
         vu32 LOAD; 
         vu32 VAL; 
         vuc32 CALIB; 
       } SysTick_TypeDef; 

       它们对应ARM手册中的名称为 
       CTRL = SysTick Control and Status Register 
       LOAD = SysTick Reload Value Register 
       VAL = SysTick Current Value Register 
       CALIB = SysTick Calibration Value Register 

使用特权

评论回复
7
京剧娃娃| | 2011-7-19 11:34 | 只看该作者
1# lgj
哈哈哈楼主看看权威指南的序言就知道真正要解决问题需要追本溯源啦
去ARM官网下载ARMv7-M Architecture Reference Manual 的B3.3 The System timer,Systick里面有详细介绍呢

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

lgj

1

主题

3

帖子

0

粉丝