GD32F303ZET6三种低功耗例程

睡眠模式例程:MCU的UART3接收到数据 ,进入UART3接收中断  即唤醒睡眠模式。

int main(void)
{
/********   本实验测试单片机睡眠模式         *********/
/* 功能:串口中断唤醒     唤醒后闪灯   闪烁5次  进入睡眠模式   */int FlashingCount =0;//init uart3Modbus2_Init(9600); //init ledgd_eval_led_init(LED2);   //run lightwhile(1){my_delay(1000);//取反gd_eval_led_toggle(LED2);FlashingCount ++;if(FlashingCount >= 10){FlashingCount = 0;gd_eval_led_off(LED2);//进入睡眠模式rcu_periph_clock_enable(RCU_PMU);pmu_to_sleepmode(WFI_CMD);}   }
}void Modbus2_Init(unsigned int baud)  //UART3
{dma_parameter_struct dma_init_struct;//初始化串口/* enable GPIO clock */rcu_periph_clock_enable(RCU_GPIOC);   //tx PC10    rx  PC11/* enable USART clock */rcu_periph_clock_enable(RCU_UART3);/* connect port to USARTx_Tx */gpio_init(GPIOC, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_10);/* connect port to USARTx_Rx */gpio_init(GPIOC, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_11);/* USART configure */usart_deinit(UART3);usart_baudrate_set(UART3, baud);usart_receive_config(UART3, USART_RECEIVE_ENABLE); usart_transmit_config(UART3, USART_TRANSMIT_ENABLE);//开启接收中断usart_interrupt_enable(UART3, USART_INT_RBNE);  //中断注册nvic_irq_enable(UART3_IRQn, 1U, 1U); usart_enable(UART3);  //    DMA使能
//    /* enable DMA0 */rcu_periph_clock_enable(RCU_DMA1);/* deinitialize DMA channel4(UART3 tx) */dma_deinit(DMA1, DMA_CH4);                   //对应STM32  DMA2 - 通道5dma_init_struct.direction = DMA_MEMORY_TO_PERIPHERAL;dma_init_struct.memory_addr = (uint32_t)(Modbus2_DataCtrl.SendData);dma_init_struct.memory_inc = DMA_MEMORY_INCREASE_ENABLE;dma_init_struct.memory_width = DMA_MEMORY_WIDTH_8BIT;dma_init_struct.number = Modbus2_DataLen;      //发送前 需要修改的数据dma_init_struct.periph_addr = ((uint32_t)0x40004C04);  //(unsigned int)USART_DATA(UART3); dma_init_struct.periph_inc = DMA_PERIPH_INCREASE_DISABLE;dma_init_struct.periph_width = DMA_PERIPHERAL_WIDTH_8BIT;dma_init_struct.priority = DMA_PRIORITY_ULTRA_HIGH;dma_init(DMA1, DMA_CH4, &dma_init_struct);/* configure DMA mode */dma_circulation_disable(DMA1, DMA_CH4);dma_memory_to_memory_disable(DMA1, DMA_CH4);//没有设置DMA中断/* DMA0 通道3 中断优先级设置并使能 */nvic_irq_enable(DMA1_Channel3_Channel4_IRQn, 1, 1);/* 使能 DMA0 通道3 传输完成、传输错误中断 */dma_interrupt_enable(DMA1, DMA_CH4, DMA_INT_FTF|DMA_INT_ERR);/* enable USART0 DMA channel transmission and reception */dma_channel_enable(DMA1, DMA_CH4);/* USART DMA enable for transmission and reception */usart_dma_transmit_config(UART3, USART_DENT_ENABLE);    //发送
}void UART3_IRQHandler(void)
{unsigned char ReceiveData = 0;if(usart_interrupt_flag_get(UART3, USART_INT_FLAG_RBNE) != RESET){ReceiveData = usart_data_receive(UART3);usart_interrupt_flag_clear(UART3, USART_INT_FLAG_RBNE);}//空闲中断  帧中断if(usart_interrupt_flag_get(UART3, USART_INT_FLAG_IDLE) != RESET) {ReceiveData = usart_data_receive(UART3);   //清除空闲中断}}void  gd_eval_led_init (led_typedef_enum lednum)
{/* enable the led clock */rcu_periph_clock_enable(GPIO_CLK[lednum]);/* configure led GPIO port */ gpio_init(GPIO_PORT[lednum], GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ,GPIO_PIN[lednum]);GPIO_BC(GPIO_PORT[lednum]) = GPIO_PIN[lednum];
}

深度睡眠模式例程:

int main(void)
{
/********   本实验测试单片机深度睡眠模式         *********//* 功能:深度睡眠模式需要EXTI的任何中断来唤醒     唤醒后闪灯   闪烁5次  进入深度睡眠模式   本测试设置PE3外部中断   下降沿触发   唤醒MCU*/int FlashingCount =0;//init uart3Modbus2_Init(9600); //init ledgd_eval_led_init(LED2);   //run light//init PE3 init_PE3();while(1){my_delay(1000);//取反gd_eval_led_toggle(LED2);FlashingCount ++;if(FlashingCount >= 10){FlashingCount = 0;gd_eval_led_off(LED2);//进入停止模式rcu_periph_clock_enable(RCU_PMU);pmu_to_deepsleepmode(PMU_LDO_LOWPOWER, WFI_CMD);  //notice:WFI need EXTI interrupt wakeup//恢复HSE时钟SYSCLKConfig_STOP();            }   }
}void init_PE3(void)
{//enable clockrcu_periph_clock_enable(RCU_GPIOE);rcu_periph_clock_enable(RCU_AF);//init pe3 iogpio_init(GPIOE, GPIO_MODE_IPU, GPIO_OSPEED_50MHZ, GPIO_PIN_3);//set interrut /* enable and set key EXTI interrupt to the lowest priority */nvic_irq_enable(EXTI3_IRQn, 2U, 0U);/* connect key EXTI line to key GPIO pin */gpio_exti_source_select(GPIO_PORT_SOURCE_GPIOE, GPIO_PIN_SOURCE_3);/* configure key EXTI line */exti_init(EXTI_3, EXTI_INTERRUPT, EXTI_TRIG_FALLING);exti_interrupt_flag_clear(EXTI_3);
}void EXTI3_IRQHandler(void)
{if(RESET != exti_interrupt_flag_get(EXTI_3)){gd_eval_led_toggle(LED2);}exti_interrupt_flag_clear(EXTI_3);
}

待机模式例程:

int main(void)
{
/********   本实验测试单片机待机模式         *********//* 功能:待机模式唤醒方式:WKUP引脚上升沿(接3.3V 即可 已测试)  复位引脚(已测试)   独立看门狗中断   RTC闹钟     唤醒后程序重新执行。LED灯 闪烁5次 进入待机模式               */int FlashingCount =0;//init uart3Modbus2_Init(9600); //init ledgd_eval_led_init(LED2);   //run lightwhile(1){my_delay(1000);//取反gd_eval_led_toggle(LED2);FlashingCount ++;if(FlashingCount >= 10){FlashingCount = 0;gd_eval_led_off(LED2);//进入停止模式rcu_periph_clock_enable(RCU_PMU);pmu_wakeup_pin_enable();pmu_to_standbymode(WFI_CMD);   //notice:WFI need EXTI interrupt wakeup        }   }
}

GD32三种低功耗例程相关推荐

  1. stm32f103c6t6下的HAL库搭建三种低功耗模式及实战分析(stm32通用)

    目录 三种低功耗模式介绍 睡眠模式(sleep mode) 停止模式(stop mode) 待机模式(standby mode) 总结 实战测试 个别电路原理图 功耗分析 ADC功耗大解决方案 ADC ...

  2. ESP8266模块三种低功耗睡眠模式

    ESP8266模块睡眠模式 1.前言 2.睡眠模式 2.1 modem sleep -- 调制解调器睡眠模式 2.1.1`使用场景 2.1.2 核心代码 2.1.3 测试代码 2.2 light sl ...

  3. 32怎么通过一个按键实现不同工作模式_stm32几种低功耗模式的实现和差别

    点击上方蓝字关注我哦- 01 前言 按功耗由高到低排列,STM32具有运行.睡眠.停止和待机四种工作模式.上电复位后 STM32 处于运行状态,当内核不需要继续运行,就可以选择进入后面的三种低功耗模式 ...

  4. 百度地图三种定位方式测试(高精度、低功耗、仅用设备)

    百度地图三种定位方式测试(高精度.低功耗.仅用设备) Android定位SDK自v7.0版本起,按照附加功能不同,向开发者提供了四种不同类型的定位开发包,可根据不同需求,自有选择所需类型的开发包使用. ...

  5. 【玩转STM32】:串口唤醒低功耗的三种方式/低功耗下打印数据

    在使用STM32做低功耗项目时,大概率会遇到一个问题:低功耗模式下想打印数据怎么办? 今天,学长给大家另辟蹊径,介绍一种使用串口唤醒低功耗的案例.方法.可设置三种唤醒方式:检测到起始位唤醒.检测到 R ...

  6. Streamr助你掌控自己的数据(2)——三种整合数据至Streamr的典型场景

    博客说明 所有刊发内容均可转载但是需要注明出处. 三种整合数据至Streamr的典型场景 本系列文档主要介绍怎么通过Streamr管理自己的DATA,整个系列包括三篇教程文档,分别是:教你5分钟上传数 ...

  7. 吸顶wifi_分享 | 酒店WiFi网络的三种部署模式

    酒店的无线网络,在酒店部署移动网络业务的时候,很多酒店会发现实际效果远达不到预期.酒店员工和入住用户经常会抱怨无线网络不稳定.视频无限缓冲中.经常掉线--,那么今天我们来了解酒店无线网络的部署.一.影 ...

  8. RISC-V生态未来的三种可能~

    来源:嵌入式资讯精选 因为x86 架构与 Arm 架构商业使用都要付费,因此,RISC-V开源具有很大优势. 今天就来说说 RISC-V 生态的内容. 关于RISC-V RISC:Reduced In ...

  9. [ASP.NET 控件实作 Day31] TBContextMenu 控件三种不同模式的 Click 动作

    上一篇 整合 jQuery ContextMenu plugin 的右键选单控件 的文章中,我们实作了 TBContextMenu 控件:本文将以 TBContextMenu 控件为例,为选单项目加入 ...

最新文章

  1. 【iOS官方文档翻译】iOS蓝牙的基本概念
  2. django form 对象is_bound属性
  3. (原)JNI中env-GetByteArrayElements和AndroidBitmap_getInfo的冲突
  4. SpringCloud系列——Zuul 动态路由
  5. 从内部自用到对外服务,配置管理的演进和设计优化实践
  6. java 12-3 StringBuffer的添加和删除功能
  7. Docker框架使用系列教程(五)容器间的链接
  8. 【常见笔试面试算法题12续集二】动态规划算法案例2矩阵最小路径和练习题
  9. 第四次c语言实验报告模板,C语言实验报告模板.doc
  10. Python中re(正则表达式)模块学习
  11. 最全的CSS浏览器兼容整理
  12. php网页读取sql数据库数据模板,discuz模板中直接读取数据库中的插件数据
  13. 数据结构队列算法——模拟病人在医院等待就诊过程
  14. Web项目【用户管理系统】完整版
  15. math_数集(数集符号)/算数运算中英文对照
  16. MFC——CWnd类
  17. ZONe Energy Programming Contest E - Sneaking (最短路)
  18. 如何把mac里的照片放移动硬盘
  19. 中国996外资955曝光,有你家公司吗?
  20. 黑威联 QNAP NAS 通挂载外部存储使用相册套件

热门文章

  1. 【ANSYS Workbench】ACT配合Workbench真能替代Mechanical APDL经典命令操作吗?
  2. 【名说】 DB2 ROOL-BACK PENDING 日志后滚异常解决方法
  3. KEAZ128学习(三)--- GPIO和PORT
  4. 在两个已经排好序的数组里找出第K小的数
  5. 学习是个过程——不断反复不断进步
  6. WinEdt 报错: Misplaced alignment tab character . 解决方法
  7. 拿到华为200万年薪的8个人到底是何方神圣?为什么有人反而不屑?
  8. sas 导入csv文件_SAS导入导出时编码问题汇总
  9. 由蓝眼睛岛问题引发的思考
  10. CI系列之五:SVNAdmin安装及配置