【南京中科微CSM32RV20开发板试用体验】WUP 定时唤醒测试

描述

本文来源电子发烧友社区,作者:李先生, 帖子地址:https://bbs.elecfans.com/jishu_2283626_1_1.html

特性
WUP 模块是唤醒模块,时钟来源 3K,每隔 0.3ms 计数一次,当 wup_data =
时,不工作,无 irq 产生。wup_data 不等于 0 时每隔(wup_data+1)个时钟周
期产生一个 irq,计数器重新装载 wup_data 的值。可以用于低功耗模式的唤醒等。
 
寄存器
wup 数据寄存器(wup_data
CSM32RV20
 
 
wup 中断使能寄存器(wup_irq_en
CSM32RV20
 
wup 中断寄存器(wup_irq
 
CSM32RV20
 
接口代码
寄存器定义在driversIncCSM32RV20.h
 


  1. #define WUP_BASE             0x30000610UL
  2. typedef struct
  3. {
  4. volatile uint32_t DATA;
  5. volatile uint32_t IRQ_EN;
  6. volatile uint32_t IRQ;
  7. }WUP_TypeDef;
  8. #define WUP              ((WUP_TypeDef *)WUP_BASE)
复制代码
 
接口代码位于
driversSrcwup.c
driversIncwup.h
 


  1. #include "headfile.h"
  2. void WUP_Init_case1(uint32_t data)//设置中断周期,使能WUP中断
  3. {
  4.     WUP->DATA = data;
  5.     WUP->IRQ_EN = 1;
  6. }
  7. void WUP_IRQhandler(void)
  8. {
  9.     if(WUP->IRQ&0x01)
  10.     {
  11.         WUP->IRQ = 0;
  12.             //GPIO_Toggle(GPIOA,PIN14);
  13.     }
  14. }
复制代码

 
 
测试代码


  1. #include "headfile.h"
  2. int main(void)
  3. {
  4.     ///----System Init ---------------------------------------------------------------------------------------------
  5.     CLIC_Init();//系统中断配置
  6.     System_Clock_Init();//系统时钟初始化
  7.     ///----Chapter 5 GPIO Test Init ---------------------------------------------------------------------------------
  8.     GPIO_MODE_Init(GPIOA,PIN8,GPIO_MODE_OUTPUT); //GPIO 模式
  9.     UART_Init_case1(UART1);//非中断模式
  10.     WUP_Init_case1(10*1000*3);//设置中断周期,使能WUP中断 9S
  11.     Interrupt_Enable(WUP_int_ID);//CLIC使能中断
  12.     SYS_Interrupt_Enable();//CLIC开总中断
  13.         while(1)
  14.         {
  15.         //配置不同低功耗模式
  16.         System_Halt();//待机模式 halt1
  17.         ee_printf("nCSM32RV201");
  18.         System_Sleep();//睡眠模式 halt2
  19.         ee_printf("nCSM32RV202");
  20.         System_Powerdown();//掉电模式 powerdown1
  21.         ee_printf("nCSM32RV203");
  22.         System_DeepPwd();//掉电模式 powerdown2
  23.         ee_printf("nCSM32RV204");
  24.         }
  25.   return 0;
  26. }
  27. void WUP_IRQhandler(void)
  28. {
  29.     if(WUP->IRQ&0x01)
  30.     {
  31.         WUP->IRQ = 0;
  32.             GPIO_Toggle(GPIOA,PIN8);
  33.     }
  34. }
复制代码

 
 
测试
烧录程序测试,可以看到每隔10*1000*3*0.3mS9S唤醒一次,打印字符串。
CSM32RV20
 
问题待确认:
打印一次显示不全,先打印的
CSM32RV20
然后打印
1
CSM32RV20
然后是
2

CSM32RV20
前两次间隔9S,后一次间隔21S。
 
总结
对于物联网应用来说,低功耗是很重要的。实现低功耗的一个重要手段就是休眠,定时唤醒。CSM32RV20支持不同级别的低功耗模式,可以定时唤醒,适合IOT等应用场景。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分