现在我们在之前的工程(http://www.cnblogs.com/libra13179/p/7170791.html)中修改

  1. /**
  2. ******************************************************************************
  3. * File Name : main.c
  4. * Description : Main program body
  5. ******************************************************************************
  6. ** This notice applies to any and all portions of this file
  7. * that are not between comment pairs USER CODE BEGIN and
  8. * USER CODE END. Other portions of this file, whether
  9. * inserted by the user or by software development tools
  10. * are owned by their respective copyright owners.
  11. *
  12. * COPYRIGHT(c) 2017 STMicroelectronics
  13. *
  14. * Redistribution and use in source and binary forms, with or without modification,
  15. * are permitted provided that the following conditions are met:
  16. * 1. Redistributions of source code must retain the above copyright notice,
  17. * this list of conditions and the following disclaimer.
  18. * 2. Redistributions in binary form must reproduce the above copyright notice,
  19. * this list of conditions and the following disclaimer in the documentation
  20. * and/or other materials provided with the distribution.
  21. * 3. Neither the name of STMicroelectronics nor the names of its contributors
  22. * may be used to endorse or promote products derived from this software
  23. * without specific prior written permission.
  24. *
  25. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  26. * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  27. * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  28. * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
  29. * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  30. * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
  31. * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
  32. * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  33. * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  34. * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  35. *
  36. ******************************************************************************
  37. */
  38. /* Includes ------------------------------------------------------------------*/
  39. #include "main.h"
  40. #include "stm32f1xx_hal.h"
  41.  
  42. /* USER CODE BEGIN Includes */
  43.  
  44. /* USER CODE END Includes */
  45.  
  46. /* Private variables ---------------------------------------------------------*/
  47. RTC_HandleTypeDef hrtc;
  48.  
  49. /* USER CODE BEGIN PV */
  50. /* Private variables ---------------------------------------------------------*/
  51. /* Buffer used for displaying Time */
  52. uint8_t aShowTime[] = {};
  53. uint8_t rtc_alarm_flag = ;
  54. uint8_t rtc_event_flag = 0;
  55. /* USER CODE END PV */
  56.  
  57. /* Private function prototypes -----------------------------------------------*/
  58. void SystemClock_Config(void);
  59. static void MX_GPIO_Init(void);
  60. static void MX_RTC_Init(void);
  61.  
  62. /* USER CODE BEGIN PFP */
  63. /* Private function prototypes -----------------------------------------------*/
  64.  
  65. /* USER CODE END PFP */
  66.  
  67. /* USER CODE BEGIN 0 */
  68.  
  69. uint8_t BIN2BCD(uint8_t byte)
  70. {
  71. uint8_t low, high;
  72. low = byte & 0x0F;
  73. high = ((byte >> ) & 0x0F) * ;
  74. return high + low;
  75. }
  76.  
  77. uint8_t BCD2BIN(uint8_t byte)
  78. {
  79. return ((byte/)<<) + (byte%);
  80. }
  81.  
  82. /**
  83. * @brief Configure the current time and date.
  84. * @param None
  85. * @retval None
  86. */
  87. static void RTC_AlarmConfig(void)
  88. {
  89.  
  90. RTC_AlarmTypeDef salarmstructure;
  91.  
  92. /*##-1- Configure the RTC Alarm peripheral #################################*/
  93. /* Set Alarm to 01:17:30
  94. RTC Alarm Generation: Alarm on Hours, Minutes and Seconds */
  95. salarmstructure.Alarm = RTC_ALARM_A;
  96. salarmstructure.AlarmTime.Hours = 0x1;
  97. salarmstructure.AlarmTime.Minutes = 0x24;
  98. salarmstructure.AlarmTime.Seconds = 0x00;
  99.  
  100. if(HAL_RTC_SetAlarm_IT(&hrtc,&salarmstructure,RTC_FORMAT_BCD) != HAL_OK)
  101. {
  102. /* Initialization Error */
  103. Error_Handler();
  104. }
  105. }
  106.  
  107. /**
  108. * @brief Display the current time.
  109. * @param showtime : pointer to buffer
  110. * @retval None
  111. */
  112. static void RTC_TimeShow(uint8_t* showtime)
  113. {
  114. RTC_DateTypeDef sdatestructureget;
  115. RTC_TimeTypeDef stimestructureget;
  116.  
  117. /* Get the RTC current Time */
  118. HAL_RTC_GetTime(&hrtc, &stimestructureget, RTC_FORMAT_BIN);
  119. /* Get the RTC current Date */
  120. HAL_RTC_GetDate(&hrtc, &sdatestructureget, RTC_FORMAT_BIN);
  121. /* Display time Format : hh:mm:ss */
  122. sprintf((char*)showtime,"%02d:%02d:%02d",stimestructureget.Hours, stimestructureget.Minutes, stimestructureget.Seconds);
  123. }
  124. /* USER CODE END 0 */
  125.  
  126. int main(void)
  127. {
  128.  
  129. /* USER CODE BEGIN 1 */
  130.  
  131. /* USER CODE END 1 */
  132.  
  133. /* MCU Configuration----------------------------------------------------------*/
  134.  
  135. /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  136. HAL_Init();
  137.  
  138. /* USER CODE BEGIN Init */
  139.  
  140. /* USER CODE END Init */
  141.  
  142. /* Configure the system clock */
  143. SystemClock_Config();
  144.  
  145. /* USER CODE BEGIN SysInit */
  146.  
  147. /* USER CODE END SysInit */
  148.  
  149. /* Initialize all configured peripherals */
  150. MX_GPIO_Init();
  151. MX_RTC_Init();
  152.  
  153. /* USER CODE BEGIN 2 */
  154.  
  155. /*##-1- Configure Alarm ####################################################*/
  156. /* Configure RTC Alarm */
  157. RTC_AlarmConfig();
  158.  
  159. HAL_RTCEx_SetSecond_IT(&hrtc);
  160. /* USER CODE END 2 */
  161.  
  162. /* Infinite loop */
  163. /* USER CODE BEGIN WHILE */
  164. while ()
  165. {
  166. /* USER CODE END WHILE */
  167.  
  168. /* USER CODE BEGIN 3 */
  169. /*##-2- Display the updated Time #########################################*/
  170. RTC_TimeShow(aShowTime);
  171. }
  172. /* USER CODE END 3 */
  173.  
  174. }
  175.  
  176. /** System Clock Configuration
  177. */
  178. void SystemClock_Config(void)
  179. {
  180.  
  181. RCC_OscInitTypeDef RCC_OscInitStruct;
  182. RCC_ClkInitTypeDef RCC_ClkInitStruct;
  183. RCC_PeriphCLKInitTypeDef PeriphClkInit;
  184.  
  185. /**Initializes the CPU, AHB and APB busses clocks
  186. */
  187. RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_LSI|RCC_OSCILLATORTYPE_HSE;
  188. RCC_OscInitStruct.HSEState = RCC_HSE_ON;
  189. RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;
  190. RCC_OscInitStruct.HSIState = RCC_HSI_ON;
  191. RCC_OscInitStruct.LSIState = RCC_LSI_ON;
  192. RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
  193. RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
  194. RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9;
  195. if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
  196. {
  197. _Error_Handler(__FILE__, __LINE__);
  198. }
  199.  
  200. /**Initializes the CPU, AHB and APB busses clocks
  201. */
  202. RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
  203. |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
  204. RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
  205. RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
  206. RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
  207. RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
  208.  
  209. if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)
  210. {
  211. _Error_Handler(__FILE__, __LINE__);
  212. }
  213.  
  214. PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_RTC;
  215. PeriphClkInit.RTCClockSelection = RCC_RTCCLKSOURCE_LSI;
  216. if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
  217. {
  218. _Error_Handler(__FILE__, __LINE__);
  219. }
  220.  
  221. /**Configure the Systick interrupt time
  222. */
  223. HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/);
  224.  
  225. /**Configure the Systick
  226. */
  227. HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);
  228.  
  229. /* SysTick_IRQn interrupt configuration */
  230. HAL_NVIC_SetPriority(SysTick_IRQn, , );
  231. }
  232.  
  233. /* RTC init function */
  234. static void MX_RTC_Init(void)
  235. {
  236.  
  237. RTC_TimeTypeDef sTime;
  238. RTC_DateTypeDef DateToUpdate;
  239.  
  240. /**Initialize RTC Only
  241. */
  242. hrtc.Instance = RTC;
  243. hrtc.Init.AsynchPrediv = RTC_AUTO_1_SECOND;
  244. hrtc.Init.OutPut = RTC_OUTPUTSOURCE_NONE;
  245. if (HAL_RTC_Init(&hrtc) != HAL_OK)
  246. {
  247. _Error_Handler(__FILE__, __LINE__);
  248. }
  249.  
  250. /**Initialize RTC and set the Time and Date
  251. */
  252. if(HAL_RTCEx_BKUPRead(&hrtc, RTC_BKP_DR1) != 0x32F2){
  253. sTime.Hours = 0x1;
  254. sTime.Minutes = 0x17;
  255. sTime.Seconds = 0x0;
  256.  
  257. if (HAL_RTC_SetTime(&hrtc, &sTime, RTC_FORMAT_BCD) != HAL_OK)
  258. {
  259. _Error_Handler(__FILE__, __LINE__);
  260. }
  261.  
  262. DateToUpdate.WeekDay = RTC_WEEKDAY_FRIDAY;
  263. DateToUpdate.Month = RTC_MONTH_JULY;
  264. DateToUpdate.Date = 0x14;
  265. DateToUpdate.Year = 0x17;
  266.  
  267. if (HAL_RTC_SetDate(&hrtc, &DateToUpdate, RTC_FORMAT_BCD) != HAL_OK)
  268. {
  269. _Error_Handler(__FILE__, __LINE__);
  270. }
  271.  
  272. HAL_RTCEx_BKUPWrite(&hrtc,RTC_BKP_DR1,0x32F2);
  273. }
  274.  
  275. }
  276.  
  277. /** Configure pins as
  278. * Analog
  279. * Input
  280. * Output
  281. * EVENT_OUT
  282. * EXTI
  283. */
  284. static void MX_GPIO_Init(void)
  285. {
  286.  
  287. /* GPIO Ports Clock Enable */
  288. __HAL_RCC_GPIOC_CLK_ENABLE();
  289. __HAL_RCC_GPIOD_CLK_ENABLE();
  290. __HAL_RCC_GPIOA_CLK_ENABLE();
  291.  
  292. }
  293.  
  294. /* USER CODE BEGIN 4 */
  295.  
  296. void HAL_RTCEx_RTCEventCallback (RTC_HandleTypeDef *hrtc)
  297. {
  298. rtc_event_flag++;
  299. }
  300. /**
  301. * @brief Alarm callback
  302. * @param hrtc : RTC handle
  303. * @retval None
  304. */
  305. void HAL_RTC_AlarmAEventCallback(RTC_HandleTypeDef *hrtc)
  306. {
  307. rtc_alarm_flag++;
  308. }
  309. /* USER CODE END 4 */
  310.  
  311. /**
  312. * @brief This function is executed in case of error occurrence.
  313. * @param None
  314. * @retval None
  315. */
  316. void _Error_Handler(char * file, int line)
  317. {
  318. /* USER CODE BEGIN Error_Handler_Debug */
  319. /* User can add his own implementation to report the HAL error return state */
  320. while()
  321. {
  322. }
  323. /* USER CODE END Error_Handler_Debug */
  324. }
  325.  
  326. #ifdef USE_FULL_ASSERT
  327.  
  328. /**
  329. * @brief Reports the name of the source file and the source line number
  330. * where the assert_param error has occurred.
  331. * @param file: pointer to the source file name
  332. * @param line: assert_param error line source number
  333. * @retval None
  334. */
  335. void assert_failed(uint8_t* file, uint32_t line)
  336. {
  337. /* USER CODE BEGIN 6 */
  338. /* User can add his own implementation to report the file name and line number,
  339. ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
  340. /* USER CODE END 6 */
  341.  
  342. }
  343.  
  344. #endif
  345.  
  346. /**
  347. * @}
  348. */
  349.  
  350. /**
  351. * @}
  352. */
  353.  
  354. /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/

仿真测试结果

使用STM32CubeMX生成RTC工程[秒中断]的更多相关文章

  1. 使用STM32CubeMX生成RTC工程[闹钟中断2]

    在上次使用STM32CubeMX生成RTC工程[闹钟中断]基础上实现周期间隔的闹钟 一些场合需要周期性的闹钟 现在为了方便设置每十秒来一次. 备注: 当然可以直接修改HAL库static HAL_St ...

  2. 使用STM32CubeMX生成RTC工程[闹钟中断]

    使用的硬件为正点原子的MINISTM32. 需要主要注意: STM32F1系列 <UM1850 User manual Description of STM32F1xx HAL drivers ...

  3. 使用STM32CubeMX生成USB_HOST_HID工程[添加对CAPS_LOCK指示灯的控制][SetReport]

    在之前(使用STM32CubeMX生成USB_HOST_HID工程)的基础上进行修改 在结合之前在pc上的测试 USB之HID类Set_Report Request[调试手记1] 测试代码如下: /* ...

  4. 使用STM32CubeMX生成USB_HOST_HID工程

    使用开发板为STM32F105开发板. 原本想将具体步骤给写出来.时间有限.直接将STM32F105_USBH_HID.IOC上传files.cnblogs.com/files/libra13179/ ...

  5. STM32F10x_RTC秒中断

    Ⅰ.概述 RTC(Real Time Clock)是实时时钟的意思,它其实和TIM有点类似,也是利用计数的原理,选择RTC时钟源,再进行分频,到达计数的目的. 该文主要讲述关于RTC的秒中断功能,这个 ...

  6. 利用STM32CubeMX来生成USB_HID_Mouse工程【添加ADC】(1)

    现在原来的基础上添加ADC的功能. 现在(利用STM32CubeMX来生成USB_HID_Mouse工程)基础上新增硬件 JoyStick Shield 游戏摇杆扩展板 与STM32F103C8的连接 ...

  7. stm32+lwip(一):使用STM32CubeMX生成项目

    我是卓波,很高兴你来看我的博客. 系列文章: stm32+lwip(一):使用STM32CubeMX生成项目 stm32+lwip(二):UDP测试 stm32+lwip(三):TCP测试 stm32 ...

  8. 《STM32CubeMX配置STM32H743XI工程》第一讲《初始化UART,重定义printf函数,点亮一个LED灯》

    1.打开STM32CubeMX软件->新建一个工程(软件自行到ST官网下载安装) 2.输入对应的芯片型号(本次基于野火STM32H743XI Pro 开发板)点击Start Project生成项 ...

  9. spring boot 快速生成demo工程 官网生成

    最近一直在弄springboot的项目,居然最近才知道快速生成springBoot工程,原来可以这么简单, 而且官网还提供了生成java或是web项目,需要jpa,模板等服务,直接一键集成.话不多说, ...

随机推荐

  1. 【nginx】之常用命令

    查看版本号: nginx -s reload  :修改配置后重新加载生效 nginx -s reopen  :重新打开日志文件nginx -t -c /path/to/nginx.conf 测试ngi ...

  2. 【mysql】linux查看mysql配置文件my.conf

    mysql --help|grep 'my.cnf' /etc/my.cnf, /etc/mysql/my.cnf, /usr/local/etc/my.cnf, ~/.my.cnf 这些就是mysq ...

  3. k8s service网络

    资源 从整体来看,Kubernetes集群是由很多由JSON或者YAML定义的‘资源’组成,我个人比较推崇使用YAML写配置,因为它读写都很容易,同时还支持注释. 在Kubernetes中启动一个应用 ...

  4. Scrapy学习篇(一)之框架

    概览 在具体的学习scrapy之前,我们先对scrapy的架构做一个简单的了解,之后所有的内容都是基于此架构实现的,在初学阶段只需要简单的了解即可,之后的学习中,你会对此架构有更深的理解.下面是scr ...

  5. idea关闭标签快捷键修改----兼 常用实用快捷键

    还有一个快捷键: 自动补全返回值 : ctrl + alt + v alt + enter: 自动添加未定义的方法 idea 原本的关闭快捷键是: ctrl + F4,但是不好用,谁的手指伸这么长 修 ...

  6. 为什么QQ空间和QQ邮箱都是IE默认打开?

    为什么QQ空间和QQ邮箱都是IE默认打开? 我已经设置成chrome为默认浏览器了 原文转载至:https://zhidao.baidu.com/question/390662851068217285 ...

  7. MapReduce高级编程2

    MapReduce Top N .二次排序,MapJoin: TOP N 对于一组输入List(key,value),我们要创建一个Top N 列表,这是一种过滤模式,查看输入数据特定子集,观察用户的 ...

  8. MySQL--局域网、外网访问MySQL

    一.局域网.外网访问 1. 打开CMD,导航到当前MySQL的bin路径,如下图: 2. 访问MySQL:输入MySQL -u root -p,点击Enter键,即可看到密码输入框: 输入密码,点需E ...

  9. Solr进阶之Solr综合文本相似度的多因素权重排序实现

    现在有个需求是这样子的:需要计算搜索词的权重设置其为总排序权重的0.6,其他因素的权重为0.4其他因素中还有详细的划分.这里我们用Solr如何来实现?众所周知solr默认的排序方式为按照文本相似度来进 ...

  10. jenkins2.0以后的版本提供自动部署和远程部署功能?

    metting result comment: 持续集成:dev上使用 持续部署:在dev/uat/prod上使用 1.指定时间自动构建--发布第二天挂了?每次构建需要重新编译?qa和uat使用同一套 ...