1 | void USART_Configuration(void) {
|
2 | USART_InitTypeDef USART_InitStructure;
|
3 |
|
4 | USART_InitStructure.USART_BaudRate = 115200;
|
5 | USART_InitStructure.USART_WordLength = USART_WordLength_8b;
|
6 | USART_InitStructure.USART_StopBits = USART_StopBits_1;
|
7 | USART_InitStructure.USART_Parity = USART_Parity_No;
|
8 | USART_InitStructure.USART_HardwareFlowControl =
|
9 | USART_HardwareFlowControl_None;
|
10 | USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
|
11 |
|
12 | /* Configure USART3 */
|
13 | USART_Init(USART3, &USART_InitStructure);
|
14 | USART_Cmd(USART3, ENABLE);
|
15 | }
|
16 |
|
17 | void NVIC_Configuration(void) {
|
18 | NVIC_InitTypeDef NVIC_InitStructure;
|
19 |
|
20 | NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn;
|
21 | NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
|
22 | NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0F;
|
23 | NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0F;
|
24 | NVIC_Init(&NVIC_InitStructure);
|
25 |
|
26 | /* Configure and enable ADC interrupt */
|
27 | NVIC_InitStructure.NVIC_IRQChannel = ADC1_2_IRQn;
|
28 | NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0F;
|
29 | NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0F;
|
30 | NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
|
31 | NVIC_Init(&NVIC_InitStructure);
|
32 | }
|
33 |
|
34 | void EXTI15_10_IRQHandler(void) {
|
35 | if (EXTI_GetITStatus(EXTI_Line10) != RESET) {
|
36 | /* Clear interrupt flag */
|
37 | EXTI_ClearITPendingBit(EXTI_Line10);
|
38 |
|
39 | HallIRQ_L();
|
40 | }
|
41 | if (EXTI_GetITStatus(EXTI_Line11) != RESET) {
|
42 | /* Clear interrupt flag */
|
43 | EXTI_ClearITPendingBit(EXTI_Line11);
|
44 |
|
45 | HallIRQ_L();
|
46 | }
|
47 | if (EXTI_GetITStatus(EXTI_Line12) != RESET) {
|
48 | /* Clear interrupt flag */
|
49 | EXTI_ClearITPendingBit(EXTI_Line12);
|
50 |
|
51 | HallIRQ_L();
|
52 | }
|
53 |
|
54 | }
|
55 |
|
56 | void ADC1_2_IRQHandler(void) {
|
57 | GPIOA->ODR ^= GPIO_Pin_2;
|
58 | /* Clear ADC1 JEOC pending interrupt bit */
|
59 | ADC_ClearITPendingBit(ADC1, ADC_IT_JEOC);
|
60 |
|
61 | ControlLoop();
|
62 |
|
63 | GPIOA->ODR ^= GPIO_Pin_2;
|
64 |
|
65 | }
|