stm32之24.RTC闹钟usart端口修改配置
(需要修改)
源码
while(1){//rtc唤醒事件if(g_rtc_wakeup_event){//获取日期RTC_GetDate(RTC_Format_BCD,&RTC_DateStructure);printf("20%02x/%02x/%02xWeek:%x\r\n",RTC_DateStructure.RTC_Year,RTC_DateStructure.RTC_Month,RTC_DateStructure.RTC_Date,RTC_DateStructure.RTC_WeekDay);//获取时间RTC_GetTime(RTC_Format_BCD,&RTC_TimeStructure);printf("%02x:%02x:%02x\r\n",RTC_TimeStructure.RTC_Hours,RTC_TimeStructure.RTC_Minutes,RTC_TimeStructure.RTC_Seconds); g_rtc_wakeup_event=0;}//rtc闹钟事件if(g_rtc_alarm_event){//模拟闹钟滴滴的声音,并闪烁LED灯if(time_sum<=6){time_cnt++;delay_ms(1); if(time_cnt==80){PFout(8)=1;PFout(10)=0;}else if(time_cnt==160){PFout(8)=0;PFout(10)=1;}else if(time_cnt==240){PFout(8)=1;PFout(10)=0;}else if(time_cnt==320){PFout(8)=0;PFout(10)=1;} else if(time_cnt>=1000){time_sum+=1;time_cnt=0;} }else{//清空标志位g_rtc_alarm_event=0;//清零蜂鸣器鸣响的总时间值time_sum=0;//清零1毫秒时间计数值time_cnt=0;} } //串口1事件if(g_usart1_event){//判断接收到的字符串为DATE SET//示例:DATE SET-2017-10-12-4\nif(strstr((char *)g_usart1_recv_buf,"DATE SET")){//以等号分割字符串strtok((char *)g_usart1_recv_buf,"-");//获取年p=strtok(NULL,"-");//2017-2000=17 i = atoi(p)-2000;//转换为16进制 17 ->0x17i= (i/10)*16+i%10;RTC_DateStructure.RTC_Year = i;//获取月p=strtok(NULL,"-");i=atoi(p);//转换为16进制i= (i/10)*16+i%10; RTC_DateStructure.RTC_Month=i;//获取日p=strtok(NULL,"-");i=atoi(p);//转换为16进制i= (i/10)*16+i%10; RTC_DateStructure.RTC_Date = i;//获取星期p=strtok(NULL,"-");i=atoi(p);//转换为16进制i= (i/10)*16+i%10; RTC_DateStructure.RTC_WeekDay = i;//设置日期RTC_SetDate(RTC_Format_BCD, &RTC_DateStructure);} //判断接收到的字符串为TIME SET//示例:TIME SET-14-20-10\nif(strstr((char *)g_usart1_recv_buf,"TIME SET")){//以等号分割字符串strtok((char *)g_usart1_recv_buf,"-");//获取时p=strtok(NULL,"-");i = atoi(p);//通过时,判断是AM还是PMif(i<12)RTC_TimeStructure.RTC_H12 = RTC_H12_AM;elseRTC_TimeStructure.RTC_H12 = RTC_H12_PM;//转换为16进制i= (i/10)*16+i%10;RTC_TimeStructure.RTC_Hours = i;//获取分p=strtok(NULL,"-");i = atoi(p); //转换为16进制i= (i/10)*16+i%10; RTC_TimeStructure.RTC_Minutes = i;//获取秒p=strtok(NULL,"-");i = atoi(p); //转换为16进制i= (i/10)*16+i%10; RTC_TimeStructure.RTC_Seconds = i; RTC_SetTime(RTC_Format_BCD, &RTC_TimeStructure); } //判断接收到的字符串为ALARM SET//示例:ALARM SET-14-20-10\nif(strstr((char *)g_usart1_recv_buf,"ALARM SET")){//以等号分割字符串strtok((char *)g_usart1_recv_buf,"-");//获取时p=strtok(NULL,"-");i = atoi(p);//通过时,判断是AM还是PMif(i<12)RTC_AlarmStructure.RTC_AlarmTime.RTC_H12 = RTC_H12_AM;elseRTC_AlarmStructure.RTC_AlarmTime.RTC_H12 = RTC_H12_PM;//转换为16进制i= (i/10)*16+i%10;RTC_AlarmStructure.RTC_AlarmTime.RTC_Hours = i;//获取分p=strtok(NULL,"-");i = atoi(p); //转换为16进制i= (i/10)*16+i%10; RTC_AlarmStructure.RTC_AlarmTime.RTC_Minutes = i;//获取秒p=strtok(NULL,"-");i = atoi(p); //转换为16进制i= (i/10)*16+i%10; RTC_AlarmStructure.RTC_AlarmTime.RTC_Seconds = i; #if 1 //每天闹钟都会生效//RTC_AlarmStructure.RTC_AlarmDateWeekDay = 0x31; //若RTC_AlarmDateWeekDaySel_Date,当前为日期,数值范围是0x1~0x31//若RTC_AlarmDateWeekDaySel_WeekDay,当前为星期几,数值范围:0x1~0x7//RTC_AlarmStructure.RTC_AlarmDateWeekDaySel = RTC_AlarmDateWeekDaySel_Date; //选择日期RTC_AlarmStructure.RTC_AlarmMask = RTC_AlarmMask_DateWeekDay; //屏蔽星期/日期,也就说闹钟每天都会生效#else //指定闹钟在某一天生效RTC_AlarmStructure.RTC_AlarmDateWeekDay = 0x31; //若RTC_AlarmDateWeekDaySel_Date,当前为日期,数值范围是0x1~0x31//若RTC_AlarmDateWeekDaySel_WeekDay,当前为星期几,数值范围:0x1~0x7RTC_AlarmStructure.RTC_AlarmDateWeekDaySel = RTC_AlarmDateWeekDaySel_Date; //选择日期RTC_AlarmStructure.RTC_AlarmMask = RTC_AlarmMask_None; //不屏蔽星期/日期,也就说闹钟会指定某一天会生效 #endif rtc_alarm_set(RTC_AlarmStructure); printf("%s ok,please wait rtc alarm...\r\n",g_usart1_recv_buf);}//清空串口1数据计数值g_usart1_recv_cnt = 0; //清空串口1接收数据事件g_usart1_event = 0;//清空串口1接收数据缓冲区memset((char *)g_usart1_recv_buf,0,sizeof g_usart1_recv_buf);}}
}void RTC_WKUP_IRQHandler(void)
{if(RTC_GetITStatus(RTC_IT_WUT) != RESET){g_rtc_wakeup_event = 1;RTC_ClearITPendingBit(RTC_IT_WUT);} EXTI_ClearITPendingBit(EXTI_Line22);
}void USART1_IRQHandler(void) //串口1中断服务程序
{if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //接收中断{//从串口1接收数据g_usart1_recv_buf[g_usart1_recv_cnt]=USART_ReceiveData(USART1); //记录多少个数据g_usart1_recv_cnt++;//检测到'#'符或接收的数据满的时候则发送数据if(g_usart1_recv_buf[g_usart1_recv_cnt-1]=='#' || g_usart1_recv_cnt>=(sizeof g_usart1_recv_buf)-1){g_usart1_event = 1;}}
} void RTC_Alarm_IRQHandler(void)
{if(RTC_GetITStatus(RTC_IT_ALRA) != RESET){//添加用户代码g_rtc_alarm_event=1;printf("rtc alarm trig\r\n");RTC_ClearITPendingBit(RTC_IT_ALRA);EXTI_ClearITPendingBit(EXTI_Line17);}
}
相关文章:
stm32之24.RTC闹钟usart端口修改配置
(需要修改) 源码 while(1){//rtc唤醒事件if(g_rtc_wakeup_event){//获取日期RTC_GetDate(RTC_Format_BCD,&RTC_DateStructure);printf("20%02x/%02x/%02xWeek:%x\r\n",RTC_DateStructure.RTC_Year,RTC_DateStructure.RTC_Month,RTC_Date…...
Spring Security无法调用接口错误解决
之前在写程序的时候,发现有个接口使用postmapping发送请求一直无法进行调用 PostMapping("/user/login")public ResponseResult login(User user){//登录,这里登录的时候需要传入用户名和密码System.out.println("user "user.toSt…...
运维Shell脚本小试牛刀(二)
运维Shell脚本小试牛刀(一) 运维Shell脚本小试牛刀(二) 运维Shell脚本小试牛刀(三)::$(cd $(dirname $0); pwd)命令详解 一: if---else.....fi 条件判断演示 [rootwww shelldic]# cat checkpass.sh #!/bin/bash - # # # # FILE: ch…...
飞天使-python的模块与包与装饰器
文章目录 模块与包标准模块第三方模块自定义模块 高级语法切片迭代器/生成器高级模式(闭包)高级模式(装饰器) 参考视频 模块与包 标准模块 import os print(os.getcwd())import sys print(sys.argv) print(sys.platform) print(…...
linux shell脚本利用 kill -0 检查进程是否存在
1.kill -0介绍 kill -0 pid用来检查进程是否存在,kill -0 pid解释(来自man kill):“If sig is 0, then no signal is sent, but error checking is still performed.”不发送任何信号,但是系统会进行错误检查。 kill -0 pid ->若存在&am…...
抖音视频删了怎么在电脑上找回来
【昨天整理电脑文件时,不小心将剪辑好的抖音作品误删了,但是回收站中找不回来了,这些视频是我花了很多心血制作的,如果没了真的十分可惜!希望大家能帮帮我,告诉我应该如何恢复这些文件。】 现在人们都喜欢…...
方面级别情感分析之四元组预测
情感四元组预测现有方法 阅读本文之前我们默认你对情感分析有基本的认识。 如果没有请阅读文章(https://tech.tcl.com/post/646efb5b4ba0e7a6a2da6476) 情感分析四元组预测涉及四个情感元素: 方面术语a,意见术语(也叫观点术语)o, 方面类别ac,…...
算法 稀疏数组 数组优化 数组压缩 二维数组转稀疏数组 算法合集(二)
1. 五子棋游戏,玩家对战一半停战休息,此时需要存储当前对战双方棋子信息 a. 采用二维数组存储: 0为空, 1代表黑棋 2代表蓝色棋子 b. 棋盘为11行,11列 > int [][] chessArray new int [11][11]; c. 出现的问题&am…...
交换机端口安全实验
文章目录 一、实验的背景与目的二、实验拓扑三、实验需求四、实验解法1. PC配置IP地址部分2. 在SW1上开启802.1X身份验证3. 创建一个用户身份验证的用户。用户名为wangdaye,密码为1234564.创建一个端口隔离组,实现三台PC无法互相访问 摘要: 本…...
c# 本地化中英文切换
区域 线程默认区域为当前计算机所选区域 设置当前区域: Thread.CurrentThread.CurrentCulture new CultureInfo(“zh-cn”); 获取当前区域: Console.WriteLine(Thread.CurrentThread.CurrentCulture.ToString()); 区域名称: “zh-cn” 中文…...
rabbitmq的优先级队列
在我们系统中有一个 订单催付 的场景,我们的客户在天猫下的订单 , 淘宝会及时将订单推送给我们,如果在用户设定的时间内未付款那么就会给用户推送一条短信提醒,很简单的一个功能对吧,但是,tianmao商家对我们来说&#…...
SpringBoot的Cacheable缓存注解
当我们的应用程序需要频繁地读取和写入数据时,为了提高应用程序的性能,我们通常会使用缓存技术。Spring Boot 提供了一种简单而强大的缓存框架,它可以轻松地将数据缓存到 Redis 中。 在 Spring Boot 中可以在方法上简单的加上注解实现缓存。…...
uniapp的 picker 日期时间选择器
效果图: dateTimePicker.js function withData(param){return param < 10 ? 0 param : param; } function getLoopArray(start,end){var start start || 0;var end end || 1;var array [];for (var i start; i < end; i) {array.push(withData(i))…...
element ui-Pagination
页面分为两个表格,当两边的表格数据量大时,分页样式就会受到影响,可以将跳转按钮的个数减少 页面分页代码如下 页面效果...
[开发|java] 将数组使用环境变量传递配置给typesafe配置示例
参考文献 如何将一组值作为环境变量提供给 typesafe/lightbend 配置 示例 假设需要如下配置要设置环境传递 whitlist [/oauth/render,/oauth/callback]需要使用如下的方式传递到 conf 文件中: whitlist [] whitlist.0 /oauth/render whitlist.1 /oauth/render...
MAC苹果电脑如何压缩rar文件?
作为开发者,想必主力开发机肯定都以苹果的MacBook为主,究其原因,为非是因为其对开发者的友好性,且可同时进行iOS 以及android的app开发,但是windows在这方面就欠缺太多了,虽然很多人说可以使用,…...
浅析编程中的语法糖
1、理解语法糖 1.1.什么是语法糖? 语法糖是一种编程语言的特性,它并不引入新功能,而是通过提供更简洁、易读的语法形式,使代码编写和理解变得更加轻松。它有点像是一种“甜蜜”的语法,让我们在不改变底层逻辑的情况下…...
【【萌新的STM32学习23----数据通信的基本类型】】
萌新的STM32学习23----数据通信的基本类型 数据通信的基本概念 数据通信方式可以分为串行通信,并行通信 串行通信: 数据逐位按顺序依次传输 并行: 数据各位通过多条线同时传输 串行通信: 传输效率低,抗干扰能力强&am…...
标准库STL容器使用值语义
C自学精简实践教程 目录(必读) 标准库STL的容器都是值语义的。 即,无法将一个变量放到容器里。容器里存放的只是我们放进去的变量的拷贝(副本)。 示例: #include <iostream> #include <vector> using namespace s…...
dockerfile 命令详解(三)
CMD 和 ENTRYPOINT 区别 CMD #指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代 ENTRYPOINT #指定这个容器启动的时候要运行的命令,可以追加命令 FROM #基础镜像,一切从这里开始构建 MAINTAINER #…...
MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...
解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...
【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验
系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...
uniapp中使用aixos 报错
问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...
HashMap中的put方法执行流程(流程图)
1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中,其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下: 初始判断与哈希计算: 首先,putVal 方法会检查当前的 table(也就…...
永磁同步电机无速度算法--基于卡尔曼滤波器的滑模观测器
一、原理介绍 传统滑模观测器采用如下结构: 传统SMO中LPF会带来相位延迟和幅值衰减,并且需要额外的相位补偿。 采用扩展卡尔曼滤波器代替常用低通滤波器(LPF),可以去除高次谐波,并且不用相位补偿就可以获得一个误差较小的转子位…...
使用SSE解决获取状态不一致问题
使用SSE解决获取状态不一致问题 1. 问题描述2. SSE介绍2.1 SSE 的工作原理2.2 SSE 的事件格式规范2.3 SSE与其他技术对比2.4 SSE 的优缺点 3. 实战代码 1. 问题描述 目前做的一个功能是上传多个文件,这个上传文件是整体功能的一部分,文件在上传的过程中…...
恶补电源:1.电桥
一、元器件的选择 搜索并选择电桥,再multisim中选择FWB,就有各种型号的电桥: 电桥是用来干嘛的呢? 它是一个由四个二极管搭成的“桥梁”形状的电路,用来把交流电(AC)变成直流电(DC)。…...
CppCon 2015 学习:Time Programming Fundamentals
Civil Time 公历时间 特点: 共 6 个字段: Year(年)Month(月)Day(日)Hour(小时)Minute(分钟)Second(秒) 表示…...
