QuakeGod
2024-02-25 95322c84888cbe2e92024d4d65698f59b016cb52
提交 | 用户 | age
483170 1 /**
Q 2   ******************************************************************************
3   * @file    stm32f0xx_it.c
4   * @brief   Interrupt Service Routines.
5   ******************************************************************************
6   *
7   * COPYRIGHT(c) 2018 STMicroelectronics
8   *
9   * Redistribution and use in source and binary forms, with or without modification,
10   * are permitted provided that the following conditions are met:
11   *   1. Redistributions of source code must retain the above copyright notice,
12   *      this list of conditions and the following disclaimer.
13   *   2. Redistributions in binary form must reproduce the above copyright notice,
14   *      this list of conditions and the following disclaimer in the documentation
15   *      and/or other materials provided with the distribution.
16   *   3. Neither the name of STMicroelectronics nor the names of its contributors
17   *      may be used to endorse or promote products derived from this software
18   *      without specific prior written permission.
19   *
20   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
23   * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
24   * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25   * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
26   * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
27   * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
28   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30   *
31   ******************************************************************************
32   */
33 /* Includes ------------------------------------------------------------------*/
34 #include "stm32f0xx_hal.h"
35 #include "stm32f0xx.h"
36 #include "stm32f0xx_it.h"
37
38 /* USER CODE BEGIN 0 */
39 #include "functions.h"
40 /* USER CODE END 0 */
41
42 /* External variables --------------------------------------------------------*/
43
44 /******************************************************************************/
45 /*            Cortex-M0 Processor Interruption and Exception Handlers         */ 
46 /******************************************************************************/
47
48 /**
49 * @brief This function handles Non maskable interrupt.
50 */
51 void NMI_Handler(void)
52 {
53   /* USER CODE BEGIN NonMaskableInt_IRQn 0 */
54
55   /* USER CODE END NonMaskableInt_IRQn 0 */
56   /* USER CODE BEGIN NonMaskableInt_IRQn 1 */
57
58   /* USER CODE END NonMaskableInt_IRQn 1 */
59 }
60
61 /**
62 * @brief This function handles Hard fault interrupt.
63 */
64 void HardFault_Handler(void)
65 {
66   /* USER CODE BEGIN HardFault_IRQn 0 */
67
68   /* USER CODE END HardFault_IRQn 0 */
69   while (1)
70   {
71     /* USER CODE BEGIN W1_HardFault_IRQn 0 */
72     /* USER CODE END W1_HardFault_IRQn 0 */
73   }
74   /* USER CODE BEGIN HardFault_IRQn 1 */
75
76   /* USER CODE END HardFault_IRQn 1 */
77 }
78
79 /**
80 * @brief This function handles System service call via SWI instruction.
81 */
82 void SVC_Handler(void)
83 {
84   /* USER CODE BEGIN SVC_IRQn 0 */
85
86   /* USER CODE END SVC_IRQn 0 */
87   /* USER CODE BEGIN SVC_IRQn 1 */
88
89   /* USER CODE END SVC_IRQn 1 */
90 }
91
92 /**
93 * @brief This function handles Pendable request for system service.
94 */
95 void PendSV_Handler(void)
96 {
97   /* USER CODE BEGIN PendSV_IRQn 0 */
98   SCB->ICSR=SCB_ICSR_PENDSVCLR_Msk; //1<<SCB_ICSR_PENDSVCLR_Pos;
99 //    NVIC_ClearPendingIRQ(PendSV_IRQn);    
100 //    NVIC_DisableIRQ(PendSV_IRQn);
101     PendSvCallBack();
102   /* USER CODE END PendSV_IRQn 0 */
103   /* USER CODE BEGIN PendSV_IRQn 1 */
104
105   /* USER CODE END PendSV_IRQn 1 */
106 }
107
108 /**
109 * @brief This function handles System tick timer.
110 */
111 void SysTick_Handler(void)
112 {
113   /* USER CODE BEGIN SysTick_IRQn 0 */
114
115   /* USER CODE END SysTick_IRQn 0 */
116   HAL_IncTick();
117   HAL_SYSTICK_IRQHandler();
118   /* USER CODE BEGIN SysTick_IRQn 1 */
119
120   /* USER CODE END SysTick_IRQn 1 */
121 }
122
123 /******************************************************************************/
124 /* STM32F0xx Peripheral Interrupt Handlers                                    */
125 /* Add here the Interrupt Handlers for the used peripherals.                  */
126 /* For the available peripheral interrupt handler names,                      */
127 /* please refer to the startup file (startup_stm32f0xx.s).                    */
128 /******************************************************************************/
129 /**
130   * @brief This function handles TIM6 global interrupt.
131   */
132 void TIM6_IRQHandler(void)
133 {
134   /* USER CODE BEGIN TIM6_IRQn 0 */
135     if (LL_TIM_IsActiveFlag_UPDATE(TIM6)) {    LL_TIM_ClearFlag_UPDATE(TIM6);}
136     
137 //        KMem.SDD[46]+=1000;
138 //      KMem.SDT[93] = LL_TIM_GetCounter(TIM6);
139   /* USER CODE END TIM6_IRQn 0 */
140   /* USER CODE BEGIN TIM6_IRQn 1 */
141
142   /* USER CODE END TIM6_IRQn 1 */
143 }
144
145 /**
146 * @brief This function handles DMA1 channel 2 and 3 interrupts.
147 */
148 void DMA1_Channel2_3_IRQHandler(void)
149 {
150   /* USER CODE BEGIN DMA1_Channel2_3_IRQn 0 */
151     if (LL_DMA_IsActiveFlag_TC2(DMA1))
152     {
153
154         LL_DMA_ClearFlag_TC2(DMA1);
155
156     }
157   /* USER CODE END DMA1_Channel2_3_IRQn 0 */
158   
159   /* USER CODE BEGIN DMA1_Channel2_3_IRQn 1 */
160     if (LL_DMA_IsActiveFlag_TC3(DMA1))
161     {
162         LL_DMA_ClearFlag_TC3(DMA1);
163
164     }
165   /* USER CODE END DMA1_Channel2_3_IRQn 1 */
166 }
167
168 void DMA1_Channel4_5_IRQHandler(void)
169 {
170   /* USER CODE BEGIN DMA1_Channel4_5_IRQn 0 */
171     if (LL_DMA_IsActiveFlag_TC4(DMA1))
172     {
173         LL_DMA_ClearFlag_TC4(DMA1);
174 /*        
175         Uart2Stat.SendBytes+=Uart2Stat.DMASendLen;
176         DelData(&Uart2Stat.QTx,Uart2Stat.DMASendLen);
177
178         
179         if (!IsEmpty(&Uart2Stat.QTx))
180         {
181             int len1=GetContinueData(&Uart2Stat.QTx);
182 //            if (len1>128) len1=128;            
183             LL_DMA_DisableChannel(DMA1,LL_DMA_CHANNEL_4);        
184             LL_DMA_SetMemoryAddress(DMA1,LL_DMA_CHANNEL_4,(uint32_t)GetReadBuffer(&Uart2Stat.QTx));
185             LL_DMA_SetDataLength(DMA1,LL_DMA_CHANNEL_4,len1);
186             LL_DMA_EnableChannel(DMA1,LL_DMA_CHANNEL_4);
187             Uart2Stat.DMASendLen=len1;
188             LL_USART_EnableDMAReq_TX(USART2);
189         }
190         else
191 */        
192     }
193   /* USER CODE END DMA1_Channel4_5_IRQn 0 */
194   
195   /* USER CODE BEGIN DMA1_Channel4_5_IRQn 1 */
196     if (LL_DMA_IsActiveFlag_TC5(DMA1))
197     {
198         LL_DMA_ClearFlag_TC5(DMA1);
199     }
200   /* USER CODE END DMA1_Channel4_5_IRQn 1 */
201 }
202
203 void SPI1_IRQHandler(void)
204 {
205   /* USER CODE BEGIN SPI1_IRQn 0 */
206     SPI1_IRQ_CallBack();
207   /* USER CODE END SPI1_IRQn 0 */
208   /* USER CODE BEGIN SPI1_IRQn 1 */
209
210   /* USER CODE END SPI1_IRQn 1 */
211 }
212
213 /**
214 * @brief This function handles USART1 global interrupt.
215 */
216 void USART1_IRQHandler(void)
217 {
218   /* USER CODE BEGIN USART1_IRQn 0 */
219 //    LL_GPIO_TogglePin(GPIOB,LL_GPIO_PIN_7);
220
221     if (LL_USART_IsActiveFlag_RXNE(USART1))
222     {
223         unsigned char ch=LL_USART_ReceiveData8(USART1);
224     }
225     if (LL_USART_IsActiveFlag_ORE(USART1))
226     {
227         LL_USART_ClearFlag_ORE(USART1);
228     }
229     if (LL_USART_IsEnabledIT_IDLE(USART1)&&LL_USART_IsActiveFlag_IDLE(USART1))
230     {//接收完成
231         LL_USART_ClearFlag_IDLE(USART1);
232         Uart1RecvDone();
233     }    
234   /* USER CODE END USART1_IRQn 0 */
235   /* USER CODE BEGIN USART1_IRQn 1 */
236     if (LL_USART_IsActiveFlag_TC(USART1))
237     {//发送完成
238         LL_USART_ClearFlag_TC(USART1);
239         Uart1SendDone();
240     }    
241   /* USER CODE END USART1_IRQn 1 */
242 }
243
244 void USART2_IRQHandler(void)
245 {
246   /* USER CODE BEGIN USART2_IRQn 0 */
247 //    LL_GPIO_TogglePin(GPIOB,LL_GPIO_PIN_7);
248
249     if (LL_USART_IsActiveFlag_RXNE(USART2))
250     {
251         unsigned char ch=LL_USART_ReceiveData8(USART2);
252         //LL_USART_TransmitData8(USART2,ch);
253     }
254     if (LL_USART_IsActiveFlag_ORE(USART2))
255     {
256         LL_USART_ClearFlag_ORE(USART2);
257     }
258     if (LL_USART_IsEnabledIT_IDLE(USART2)&&LL_USART_IsActiveFlag_IDLE(USART2))
259     {//接收完成
260         LL_USART_ClearFlag_IDLE(USART2);
261         Uart2RecvDone();
262     }    
263   /* USER CODE END USART2_IRQn 0 */
264   /* USER CODE BEGIN USART2_IRQn 1 */
265     if (LL_USART_IsActiveFlag_TC(USART2))
266     {//发送完成
267         LL_USART_ClearFlag_TC(USART2);
268         Uart2SendDone();
269     }    
270   /* USER CODE END USART2_IRQn 1 */
271 }
272
273 /* USER CODE BEGIN 1 */
274
275 /* USER CODE END 1 */
276 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/