[Atmel] 用SAM-BA或JLINK跑ATSAM4E16的程序(12)寄存器SYSTICK

[复制链接]
 楼主| ddllxxrr 发表于 2015-11-16 21:13 | 显示全部楼层 |阅读模式
本帖最后由 ddllxxrr 于 2015-11-17 12:00 编辑

SYSTICk是属于系统级的,做下了内核当中,同ARM公司提的的核一起走。

它的工作方式是,系统自动从寄存器中减数,然后可以产生中断。

以下是寄存器的程序:
  1. /*[头文件]*/
  2. #include <sam.h>

  3. /* 毫秒计数器*/
  4. static volatile uint32_t ms_tick = 0;

  5. /*[中断处理程序]*/
  6. void SysTick_Handler()
  7. {
  8.         ++ms_tick;
  9. }

  10. /*[子程序]*/
  11. /*延迟*/
  12. void Delay(int ms)
  13. {
  14.         uint32_t end_count = ms_tick + ms;
  15.         while (ms_tick < end_count);
  16. }

  17. // 配置SysTick,使其每1ms产生一次中断
  18. void ConfigSysTick()
  19. {
  20.         // SysTick 的重载值和当前值在芯片重置时都是未定义的
  21.         // 设置重载值,使其每1ms产生一次中断
  22.         const uint32_t reload_v = CHIP_FREQ_MAINCK_RC_4MHZ / 1000;
  23.         SysTick->LOAD = reload_v & SysTick_LOAD_RELOAD_Msk - 1;
  24.         // 清空当前值
  25.         SysTick->VAL = 0;
  26.         // 配置
  27.         SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk        // 选择时钟源为处理器时钟
  28.         | SysTick_CTRL_TICKINT_Msk                // 计数器递减至0时产生中断
  29.         | SysTick_CTRL_ENABLE_Msk;                // 使能SysTick
  30.         // 在NVIC中使能中断
  31.         NVIC_ClearPendingIRQ(SysTick_IRQn);
  32.         NVIC_EnableIRQ(SysTick_IRQn);
  33. }
  34. /*[主程序]*/
  35. int main (void)
  36. {
  37.         /* 让PIO控制器直接控制PA0引脚 PIO 使能 */
  38.         PIOA->PIO_PER = (uint32_t)0x01;
  39.         /* PIO 输出使能 */
  40.         PIOA->PIO_OER = (uint32_t)0x01;
  41.         /* PIO 输出写使能 */
  42.         PIOA->PIO_OWER = (uint32_t)0x01;
  43.         ConfigSysTick();
  44.         while (1) {
  45.                 //切换led灯对应的管脚电平
  46.                 Delay(500);
  47.                 /* 设置PA0引脚为高电平,灯灭 */
  48.                 PIOA->PIO_SODR = (uint32_t)0x01;
  49.                 Delay(500);
  50.                 /* 设置PA0引脚为高电平,灯亮 */
  51.                 PIOA->PIO_CODR = (uint32_t)0x01;
  52.         }
  53.         return 0;
  54. }



运结果是PA0引角一闪一闪地。不停闪动。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

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

本版积分规则

个人签名:http://shop34182318.taobao.com/ http://shop562064536.taobao.com

2403

主题

6994

帖子

68

粉丝
快速回复 在线客服 返回列表 返回顶部