]> git.sur5r.net Git - freertos/blob - Demo/CORTEX_STM32F103_IAR/STM32F10xFWLib/src/stm32f10x_iwdg.c
Add in first STM32 demo.
[freertos] / Demo / CORTEX_STM32F103_IAR / STM32F10xFWLib / src / stm32f10x_iwdg.c
1 /******************** (C) COPYRIGHT 2007 STMicroelectronics ********************\r
2 * File Name          : stm32f10x_iwdg.c\r
3 * Author             : MCD Application Team\r
4 * Date First Issued  : 09/29/2006\r
5 * Description        : This file provides all the IWDG firmware functions.\r
6 ********************************************************************************\r
7 * History:\r
8 * 04/02/2007: V0.2\r
9 * 02/05/2007: V0.1\r
10 * 09/29/2006: V0.01\r
11 ********************************************************************************\r
12 * THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS\r
13 * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.\r
14 * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,\r
15 * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE\r
16 * CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING\r
17 * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.\r
18 *******************************************************************************/\r
19 \r
20 /* Includes ------------------------------------------------------------------*/\r
21 #include "stm32f10x_iwdg.h"\r
22 \r
23 /* Private typedef -----------------------------------------------------------*/\r
24 /* Private define ------------------------------------------------------------*/\r
25 /* ---------------------- IWDG registers bit mask ------------------------ */\r
26 /* KR register bit mask */\r
27 #define KR_Reload    ((u16)0xAAAA)\r
28 #define KR_Enable    ((u16)0xCCCC)\r
29 \r
30 /* Private macro -------------------------------------------------------------*/\r
31 /* Private variables ---------------------------------------------------------*/\r
32 /* Private function prototypes -----------------------------------------------*/\r
33 /* Private functions ---------------------------------------------------------*/\r
34 \r
35 /*******************************************************************************\r
36 * Function Name  : IWDG_WriteAccessCmd\r
37 * Description    : Enables or disables write access to IWDG_PR and IWDG_RLR\r
38 *                  registers.\r
39 * Input          : - IWDG_WriteAccess: new state of write access to IWDG_PR and\r
40 *                    IWDG_RLR registers.\r
41 *                    This parameter can be one of the following values:\r
42 *                       - IWDG_WriteAccess_Enable: Enable write access to \r
43 *                         IWDG_PR and IWDG_RLR registers\r
44 *                       - IWDG_WriteAccess_Disable: Disable write access to\r
45 *                         IWDG_PR and IWDG_RLR registers\r
46 * Output         : None\r
47 * Return         : None\r
48 *******************************************************************************/\r
49 void IWDG_WriteAccessCmd(u16 IWDG_WriteAccess)\r
50 {\r
51   /* Check the parameters */\r
52   assert(IS_IWDG_WRITE_ACCESS(IWDG_WriteAccess));\r
53 \r
54   IWDG->KR = IWDG_WriteAccess;\r
55 }\r
56 \r
57 /*******************************************************************************\r
58 * Function Name  : IWDG_SetPrescaler\r
59 * Description    : Sets IWDG Prescaler value.\r
60 * Input          : - IWDG_Prescaler: specifies the IWDG Prescaler value.\r
61 *                    This parameter can be one of the following values:\r
62 *                       - IWDG_Prescaler_4: IWDG prescaler set to 4\r
63 *                       - IWDG_Prescaler_8: IWDG prescaler set to 8\r
64 *                       - IWDG_Prescaler_16: IWDG prescaler set to 16\r
65 *                       - IWDG_Prescaler_32: IWDG prescaler set to 32\r
66 *                       - IWDG_Prescaler_64: IWDG prescaler set to 64\r
67 *                       - IWDG_Prescaler_128: IWDG prescaler set to 128\r
68 *                       - IWDG_Prescaler_256: IWDG prescaler set to 256\r
69 * Output         : None\r
70 * Return         : None\r
71 *******************************************************************************/\r
72 void IWDG_SetPrescaler(u8 IWDG_Prescaler)\r
73 {\r
74   /* Check the parameters */\r
75   assert(IS_IWDG_PRESCALER(IWDG_Prescaler));\r
76 \r
77   IWDG->PR = IWDG_Prescaler;\r
78 }\r
79 \r
80 /*******************************************************************************\r
81 * Function Name  : IWDG_SetReload\r
82 * Description    : Sets IWDG Reload value.\r
83 * Input          : - Reload: specifies the IWDG Reload value.\r
84 *                    This parameter must be a number between 0 and 0x0FFF.\r
85 * Output         : None\r
86 * Return         : None\r
87 *******************************************************************************/\r
88 void IWDG_SetReload(u16 Reload)\r
89 {\r
90   /* Check the parameters */\r
91   assert(IS_IWDG_RELOAD(Reload));\r
92 \r
93   IWDG->RLR = Reload;\r
94 }\r
95 \r
96 /*******************************************************************************\r
97 * Function Name  : IWDG_ReloadCounter\r
98 * Description    : Reloads IWDG counter with value defined in the reload register\r
99 *                  (write access to IWDG_PR and IWDG_RLR registers disabled).\r
100 * Input          : None\r
101 * Output         : None\r
102 * Return         : None\r
103 *******************************************************************************/\r
104 void IWDG_ReloadCounter(void)\r
105 {\r
106   IWDG->KR = KR_Reload;\r
107 }\r
108 \r
109 /*******************************************************************************\r
110 * Function Name  : IWDG_Enable\r
111 * Description    : Enables IWDG (write access to IWDG_PR and IWDG_RLR registers\r
112 *                  disabled).\r
113 * Input          : None\r
114 * Output         : None\r
115 * Return         : None\r
116 *******************************************************************************/\r
117 void IWDG_Enable(void)\r
118 {\r
119   IWDG->KR = KR_Enable;\r
120 }\r
121 \r
122 /*******************************************************************************\r
123 * Function Name  : IWDG_GetFlagStatus\r
124 * Description    : Checks whether the specified IWDG flag is set or not.\r
125 * Input          : - IWDG_FLAG: specifies the flag to check.\r
126 *                    This parameter can be one of the following values:\r
127 *                       - IWDG_FLAG_PVU: Prescaler Value Update on going\r
128 *                       - IWDG_FLAG_RVU: Reload Value Update on going\r
129 * Output         : None\r
130 * Return         : The new state of IWDG_FLAG (SET or RESET).\r
131 *******************************************************************************/\r
132 FlagStatus IWDG_GetFlagStatus(u16 IWDG_FLAG)\r
133 {\r
134   FlagStatus bitstatus = RESET;\r
135 \r
136   /* Check the parameters */\r
137   assert(IS_IWDG_FLAG(IWDG_FLAG));\r
138 \r
139   if ((IWDG->SR & IWDG_FLAG) != (u32)RESET)\r
140   {\r
141     bitstatus = SET;\r
142   }\r
143   else\r
144   {\r
145     bitstatus = RESET;\r
146   }\r
147 \r
148   /* Return the flag status */\r
149   return bitstatus;\r
150 }\r
151 \r
152 /******************* (C) COPYRIGHT 2007 STMicroelectronics *****END OF FILE****/\r