查看: 815|回复: 0

SAM4S Xplained Pro的SysTick测试例程

[复制链接]
  • TA的每日心情
    开心
    2018-3-22 09:19
  • 签到天数: 144 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2014-11-21 13:15:49 | 显示全部楼层 |阅读模式
    分享到:
    实验目的:配置SysTick外设定时使LED0闪烁!
    一、通过数据手册了解SysTick
    1、24位宽的计数器

    2、相关寄存器

    二、初始化库函数
    注意:ticks最大是0X00FFFFFF(16777215
    __STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)
    {
    if (ticks > SysTick_LOAD_RELOAD_Msk)  return (1);            /* Reload value impossible */
    SysTick->LOAD  = (ticks & SysTick_LOAD_RELOAD_Msk) - 1;      /* set reload register */
    NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1);  /* set Priority for Systick Interrupt */
    SysTick->VAL   = 0;                                          /* Load the SysTick Counter Value */
    SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |/*时钟源=处理器时钟*/
    SysTick_CTRL_TICKINT_Msk   |/*使能SysTick异常请求*/
    SysTick_CTRL_ENABLE_Msk;                    /* 计数使能  Enable SysTick IRQ and SysTick Timer */
    return (0);                                                  /* Function successful */
    }
    //中断函数
    void SysTick_Handler(void)
    {
    static unsigned char i=0;
    if(i==0)
    {
    i=1;
    ioport_set_pin_level(LED_0_PIN, !LED_0_ACTIVE);//PC23=0
    }
    else
    {
    i=0;
    ioport_set_pin_level(LED_0_PIN, LED_0_ACTIVE);//PC23=0
    }
    }
    //配置SYSTICK
    //12000000,5HZ
        SysTick_Config(12000000);
    三、了解时钟关系
    系统时钟

    在sysclk_init();函数中
    选择外部XTAL 12M为时钟源,然后PLL到120M,在经PMC_MCKR 2分频到60MHZ
    那就是为什么计数12000000后是5HZ的原因。
    #ifdef CONFIG_PLL0_SOURCE//使用pllack作为主时钟源
    else if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_PLLACK) {
    struct pll_config pllcfg;
    pll_enable_source(CONFIG_PLL0_SOURCE);//PLL时钟源:外部晶体振荡器
    pll_config_defaults(&pllcfg, 0);
    pll_enable(&pllcfg, 0);
    pll_wait_for_lock(0);
    pmc_switch_mck_to_pllack(CONFIG_SYSCLK_PRES);//设置主时钟的2分频器后MCU=60M: PLL倍频120M后,经Master Clock Controller(PMC_MCKR) 2分频
    }
    #endif
    ATEML的Atmel Studio 6.2工具在编译时应该做了些判断
    当输入SYSTICK计数上限时,初始化中不让添加中断


    范围内


    还有使用问题,中断函数里中断怎么加不进去!有时LOAD后会调试没反应掉!
    回复

    使用道具 举报

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

    本版积分规则

    关闭

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

    手机版|小黑屋|与非网

    GMT+8, 2024-4-20 10:10 , Processed in 0.113343 second(s), 17 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.