Skip to content

Commit 4671510

Browse files
committed
♻️ refactor code
1 parent 1be651c commit 4671510

File tree

4 files changed

+146
-84
lines changed

4 files changed

+146
-84
lines changed

dma/Makefile

+3
Original file line numberDiff line numberDiff line change
@@ -135,3 +135,6 @@ flash: bin
135135
# remove generated files
136136
clean:
137137
rm -rf build
138+
139+
# include generated rules
140+
-include $(OBJS:%.o=%.d)

dma/include/startup_stm32f1.h

+114
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
#include <stdint.h>
2+
#ifndef __STARTUP_STM32F1_H__
3+
#define __STARTUP_STM32F1_H__
4+
5+
/**
6+
* @brief Ending boundry of .text section in SRAM
7+
* This address does not belong to .text section
8+
*/
9+
extern uint32_t _etext;
10+
11+
/**
12+
* @brief Starting address of .data section in SRAM
13+
*/
14+
extern uint32_t _sdata;
15+
16+
/**
17+
* @brief Ending boundry of .data section in SRAM
18+
* This address does not belong to .data section
19+
*/
20+
extern uint32_t _edata;
21+
22+
/**
23+
* @brief Starting address of .data section in FLASH
24+
*/
25+
extern uint32_t _la_data;
26+
27+
/**
28+
* @brief Starting address of .bss section in SRAM
29+
*/
30+
extern uint32_t _sbss;
31+
32+
/**
33+
* @brief Ending boundry of .bss section in SRAM
34+
* This address does not belong to .bss section
35+
*/
36+
extern uint32_t _ebss;
37+
38+
/**
39+
* @brief Address to be set in the main stack pointer
40+
*/
41+
extern uint32_t _stack_top;
42+
43+
void __attribute__((noreturn)) Reset_Handler(void);
44+
void __attribute__((noreturn)) Default_Handler(void);
45+
46+
void __attribute__((weak, alias("Default_Handler"))) NMI_Handler(void);
47+
void __attribute__((weak, alias("Default_Handler"))) HardFault_Handler(void);
48+
void __attribute__((weak, alias("Default_Handler"))) MemManage_Handler(void);
49+
void __attribute__((weak, alias("Default_Handler"))) BusFault_Handler(void);
50+
void __attribute__((weak, alias("Default_Handler"))) UsageFault_Handler(void);
51+
void __attribute__((weak, alias("Default_Handler"))) SVC_Handler(void);
52+
void __attribute__((weak, alias("Default_Handler"))) DebugMon_Handler(void);
53+
void __attribute__((weak, alias("Default_Handler"))) PendSV_Handler(void);
54+
void __attribute__((weak, alias("Default_Handler"))) SysTick_Handler(void);
55+
void __attribute__((weak, alias("Default_Handler"))) WWDG_IRQHandler(void);
56+
void __attribute__((weak, alias("Default_Handler"))) PVD_IRQHandler(void);
57+
void __attribute__((weak, alias("Default_Handler"))) TAMP_STAMP_IRQHandler(void);
58+
void __attribute__((weak, alias("Default_Handler"))) RTC_WKUP_IRQHandler(void);
59+
void __attribute__((weak, alias("Default_Handler"))) RCC_IRQHandler(void);
60+
void __attribute__((weak, alias("Default_Handler"))) EXTI0_IRQHandler(void);
61+
void __attribute__((weak, alias("Default_Handler"))) EXTI1_IRQHandler(void);
62+
void __attribute__((weak, alias("Default_Handler"))) EXTI2_IRQHandler(void);
63+
void __attribute__((weak, alias("Default_Handler"))) EXTI3_IRQHandler(void);
64+
void __attribute__((weak, alias("Default_Handler"))) EXTI4_IRQHandler(void);
65+
void __attribute__((weak, alias("Default_Handler"))) DMA1_Channel1_IRQHandler(void);
66+
void __attribute__((weak, alias("Default_Handler"))) DMA1_Channel2_IRQHandler(void);
67+
void __attribute__((weak, alias("Default_Handler"))) DMA1_Channel3_IRQHandler(void);
68+
void __attribute__((weak, alias("Default_Handler"))) DMA1_Channel4_IRQHandler(void);
69+
void __attribute__((weak, alias("Default_Handler"))) DMA1_Channel5_IRQHandler(void);
70+
void __attribute__((weak, alias("Default_Handler"))) DMA1_Channel6_IRQHandler(void);
71+
void __attribute__((weak, alias("Default_Handler"))) DMA1_Channel7_IRQHandler(void);
72+
void __attribute__((weak, alias("Default_Handler"))) ADC_IRQHandler(void);
73+
void __attribute__((weak, alias("Default_Handler"))) USB_HP_CAN_TX_IRQHandler(void);
74+
void __attribute__((weak, alias("Default_Handler"))) USB_LP_CAN_RX0_IRQHandler(void);
75+
void __attribute__((weak, alias("Default_Handler"))) CAN_RX1_IRQHandler(void);
76+
void __attribute__((weak, alias("Default_Handler"))) CAN_SCE_IRQHandler(void);
77+
void __attribute__((weak, alias("Default_Handler"))) EXTI9_5_IRQHandler(void);
78+
void __attribute__((weak, alias("Default_Handler"))) TIM1_BRK_IRQHandler(void);
79+
void __attribute__((weak, alias("Default_Handler"))) TIM1_UP_IRQHandler(void);
80+
void __attribute__((weak, alias("Default_Handler"))) TIM1_TRG_COM_IRQHandler(void);
81+
void __attribute__((weak, alias("Default_Handler"))) TIM1_CC_IRQHandler(void);
82+
void __attribute__((weak, alias("Default_Handler"))) TIM2_IRQHandler(void);
83+
void __attribute__((weak, alias("Default_Handler"))) TIM3_IRQHandler(void);
84+
void __attribute__((weak, alias("Default_Handler"))) TIM4_IRQHandler(void);
85+
void __attribute__((weak, alias("Default_Handler"))) I2C1_EV_IRQHandler(void);
86+
void __attribute__((weak, alias("Default_Handler"))) I2C1_ER_IRQHandler(void);
87+
void __attribute__((weak, alias("Default_Handler"))) I2C2_EV_IRQHandler(void);
88+
void __attribute__((weak, alias("Default_Handler"))) I2C2_ER_IRQHandler(void);
89+
void __attribute__((weak, alias("Default_Handler"))) SPI1_IRQHandler(void);
90+
void __attribute__((weak, alias("Default_Handler"))) SPI2_IRQHandler(void);
91+
void __attribute__((weak, alias("Default_Handler"))) USART1_IRQHandler(void);
92+
void __attribute__((weak, alias("Default_Handler"))) USART2_IRQHandler(void);
93+
void __attribute__((weak, alias("Default_Handler"))) USART3_IRQHandler(void);
94+
void __attribute__((weak, alias("Default_Handler"))) EXTI15_10_IRQHandler(void);
95+
void __attribute__((weak, alias("Default_Handler"))) RTC_Alarm_IRQHandler(void);
96+
void __attribute__((weak, alias("Default_Handler"))) USB_Wakeup_IRQHandler(void);
97+
void __attribute__((weak, alias("Default_Handler"))) TIM8_BRK_IRQHandler(void);
98+
void __attribute__((weak, alias("Default_Handler"))) TIM8_UP_IRQHandler(void);
99+
void __attribute__((weak, alias("Default_Handler"))) TIM8_TRG_COM_IRQHandler(void);
100+
void __attribute__((weak, alias("Default_Handler"))) TIM8_CC_IRQHandler(void);
101+
void __attribute__((weak, alias("Default_Handler"))) ADC3_IRQHandler(void);
102+
void __attribute__((weak, alias("Default_Handler"))) FSMC_IRQHandler(void);
103+
void __attribute__((weak, alias("Default_Handler"))) SDIO_IRQHandler(void);
104+
void __attribute__((weak, alias("Default_Handler"))) TIM5_IRQHandler(void);
105+
void __attribute__((weak, alias("Default_Handler"))) SPI3_IRQHandler(void);
106+
void __attribute__((weak, alias("Default_Handler"))) UART4_IRQHandler(void);
107+
void __attribute__((weak, alias("Default_Handler"))) UART5_IRQHandler(void);
108+
void __attribute__((weak, alias("Default_Handler"))) TIM6_IRQHandler(void);
109+
void __attribute__((weak, alias("Default_Handler"))) TIM7_IRQHandler(void);
110+
void __attribute__((weak, alias("Default_Handler"))) DMA2_Channel1_IRQHandler(void);
111+
void __attribute__((weak, alias("Default_Handler"))) DMA2_Channel2_IRQHandler(void);
112+
void __attribute__((weak, alias("Default_Handler"))) DMA2_Channel3_IRQHandler(void);
113+
void __attribute__((weak, alias("Default_Handler"))) DMA2_Channel4_5_IRQHandler(void);
114+
#endif

dma/src/startup_stm32f1.c

+13-84
Original file line numberDiff line numberDiff line change
@@ -19,87 +19,7 @@
1919
#include <stdint.h>
2020
#include <stm32f1xx.h>
2121
#include <main.h>
22-
23-
extern uint32_t _etext;
24-
extern uint32_t _sdata;
25-
extern uint32_t _edata;
26-
extern uint32_t _la_data;
27-
28-
extern uint32_t _sbss;
29-
extern uint32_t _ebss;
30-
extern uint32_t _stack_top;
31-
32-
33-
void Reset_Handler(void);
34-
void Default_Handler(void);
35-
void NMI_Handler(void) __attribute__((weak, alias("Default_Handler")));
36-
void HardFault_Handler(void) __attribute__((weak, alias("Default_Handler")));
37-
void MemManage_Handler(void) __attribute__((weak, alias("Default_Handler")));
38-
void BusFault_Handler(void) __attribute__((weak, alias("Default_Handler")));
39-
void UsageFault_Handler(void) __attribute__((weak, alias("Default_Handler")));
40-
void SVC_Handler(void) __attribute__((weak, alias("Default_Handler")));
41-
void DebugMon_Handler(void) __attribute__((weak, alias("Default_Handler")));
42-
void PendSV_Handler(void) __attribute__((weak, alias("Default_Handler")));
43-
void SysTick_Handler(void) __attribute__((weak, alias("Default_Handler")));
44-
void WWDG_IRQHandler(void) __attribute__((weak, alias("Default_Handler")));
45-
void PVD_IRQHandler(void) __attribute__((weak, alias("Default_Handler")));
46-
void TAMP_STAMP_IRQHandler(void) __attribute__((weak, alias("Default_Handler")));
47-
void RTC_WKUP_IRQHandler(void) __attribute__((weak, alias("Default_Handler")));
48-
void RCC_IRQHandler(void) __attribute__((weak, alias("Default_Handler")));
49-
void EXTI0_IRQHandler(void) __attribute__((weak, alias("Default_Handler")));
50-
void EXTI1_IRQHandler(void) __attribute__((weak, alias("Default_Handler")));
51-
void EXTI2_IRQHandler(void) __attribute__((weak, alias("Default_Handler")));
52-
void EXTI3_IRQHandler(void) __attribute__((weak, alias("Default_Handler")));
53-
void EXTI4_IRQHandler(void) __attribute__((weak, alias("Default_Handler")));
54-
void DMA1_Channel1_IRQHandler(void) __attribute__((weak, alias("Default_Handler")));
55-
void DMA1_Channel2_IRQHandler(void) __attribute__((weak, alias("Default_Handler")));
56-
void DMA1_Channel3_IRQHandler(void) __attribute__((weak, alias("Default_Handler")));
57-
void DMA1_Channel4_IRQHandler(void) __attribute__((weak, alias("Default_Handler")));
58-
void DMA1_Channel5_IRQHandler(void) __attribute__((weak, alias("Default_Handler")));
59-
void DMA1_Channel6_IRQHandler(void) __attribute__((weak, alias("Default_Handler")));
60-
void DMA1_Channel7_IRQHandler(void) __attribute__((weak, alias("Default_Handler")));
61-
void ADC_IRQHandler(void) __attribute__((weak, alias("Default_Handler")));
62-
void USB_HP_CAN_TX_IRQHandler(void) __attribute__((weak, alias("Default_Handler")));
63-
void USB_LP_CAN_RX0_IRQHandler(void) __attribute__((weak, alias("Default_Handler")));
64-
void CAN_RX1_IRQHandler(void) __attribute__((weak, alias("Default_Handler")));
65-
void CAN_SCE_IRQHandler(void) __attribute__((weak, alias("Default_Handler")));
66-
void EXTI9_5_IRQHandler(void) __attribute__((weak, alias("Default_Handler")));
67-
void TIM1_BRK_IRQHandler(void) __attribute__((weak, alias("Default_Handler")));
68-
void TIM1_UP_IRQHandler(void) __attribute__((weak, alias("Default_Handler")));
69-
void TIM1_TRG_COM_IRQHandler(void) __attribute__((weak, alias("Default_Handler")));
70-
void TIM1_CC_IRQHandler(void) __attribute__((weak, alias("Default_Handler")));
71-
void TIM2_IRQHandler(void) __attribute__((weak, alias("Default_Handler")));
72-
void TIM3_IRQHandler(void) __attribute__((weak, alias("Default_Handler")));
73-
void TIM4_IRQHandler(void) __attribute__((weak, alias("Default_Handler")));
74-
void I2C1_EV_IRQHandler(void) __attribute__((weak, alias("Default_Handler")));
75-
void I2C1_ER_IRQHandler(void) __attribute__((weak, alias("Default_Handler")));
76-
void I2C2_EV_IRQHandler(void) __attribute__((weak, alias("Default_Handler")));
77-
void I2C2_ER_IRQHandler(void) __attribute__((weak, alias("Default_Handler")));
78-
void SPI1_IRQHandler(void) __attribute__((weak, alias("Default_Handler")));
79-
void SPI2_IRQHandler(void) __attribute__((weak, alias("Default_Handler")));
80-
void USART1_IRQHandler(void) __attribute__((weak, alias("Default_Handler")));
81-
void USART2_IRQHandler(void) __attribute__((weak, alias("Default_Handler")));
82-
void USART3_IRQHandler(void) __attribute__((weak, alias("Default_Handler")));
83-
void EXTI15_10_IRQHandler(void) __attribute__((weak, alias("Default_Handler")));
84-
void RTC_Alarm_IRQHandler(void) __attribute__((weak, alias("Default_Handler")));
85-
void USB_Wakeup_IRQHandler(void) __attribute__((weak, alias("Default_Handler")));
86-
void TIM8_BRK_IRQHandler(void) __attribute__((weak, alias("Default_Handler")));
87-
void TIM8_UP_IRQHandler(void) __attribute__((weak, alias("Default_Handler")));
88-
void TIM8_TRG_COM_IRQHandler(void) __attribute__((weak, alias("Default_Handler")));
89-
void TIM8_CC_IRQHandler(void) __attribute__((weak, alias("Default_Handler")));
90-
void ADC3_IRQHandler(void) __attribute__((weak, alias("Default_Handler")));
91-
void FSMC_IRQHandler(void) __attribute__((weak, alias("Default_Handler")));
92-
void SDIO_IRQHandler(void) __attribute__((weak, alias("Default_Handler")));
93-
void TIM5_IRQHandler(void) __attribute__((weak, alias("Default_Handler")));
94-
void SPI3_IRQHandler(void) __attribute__((weak, alias("Default_Handler")));
95-
void UART4_IRQHandler(void) __attribute__((weak, alias("Default_Handler")));
96-
void UART5_IRQHandler(void) __attribute__((weak, alias("Default_Handler")));
97-
void TIM6_IRQHandler(void) __attribute__((weak, alias("Default_Handler")));
98-
void TIM7_IRQHandler(void) __attribute__((weak, alias("Default_Handler")));
99-
void DMA2_Channel1_IRQHandler(void) __attribute__((weak, alias("Default_Handler")));
100-
void DMA2_Channel2_IRQHandler(void) __attribute__((weak, alias("Default_Handler")));
101-
void DMA2_Channel3_IRQHandler(void) __attribute__((weak, alias("Default_Handler")));
102-
void DMA2_Channel4_5_IRQHandler(void) __attribute__((weak, alias("Default_Handler")));
22+
#include <startup_stm32f1.h>
10323

10424
// Define the vector table
10525
uint32_t vectors[] __attribute__((section(".isr_vector"))) = {
@@ -182,14 +102,14 @@ uint32_t vectors[] __attribute__((section(".isr_vector"))) = {
182102
};
183103

184104

185-
void Default_Handler(void)
105+
void __attribute__((noreturn)) Default_Handler(void)
186106
{
187107
while (1)
188108
;
189109
}
190110

191111

192-
void Reset_Handler(void)
112+
void __attribute__((noreturn)) Reset_Handler(void)
193113
{
194114
// copy .data section to SRAM
195115
uint32_t *start_sram = (uint32_t *)&_sdata;
@@ -206,7 +126,16 @@ void Reset_Handler(void)
206126
*start_bss++ = 0;
207127
}
208128

129+
// set value of SystemCoreClock variable
209130
SystemCoreClockUpdate();
210-
// now invoke main
131+
132+
// Call main function
211133
main();
134+
135+
// loop continuously
136+
while (1)
137+
{
138+
__asm("nop");
139+
}
140+
212141
}

dma/stm32f1.ld

+16
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,19 @@
1+
/**
2+
* @file stm32f1.ld
3+
* @author Rohit Nimkar ([email protected])
4+
* @brief Linker script for stm32f103c8t6 micro-controller
5+
* @version 1.2
6+
* @date 2022-12-07
7+
*
8+
* @copyright Copyright (c) 2022
9+
* @attention
10+
*
11+
* This software component is licensed by Rohit Nimkar under BSD 3-Clause license,
12+
* the "License"; You may not use this file except in compliance with the
13+
* License. You may obtain a copy of the License at: opensource.org/licenses/BSD-3-Clause
14+
*
15+
*/
16+
117
ENTRY(Reset_Handler)
218

319
MEMORY

0 commit comments

Comments
 (0)