mirror of
https://github.com/rfivet/stm32bringup.git
synced 2025-10-19 09:14:02 -04:00
Entry at reset, C startup, user LED driven by System Tick on STM32F030F4.
This commit is contained in:
45
blink.c
Normal file
45
blink.c
Normal file
@@ -0,0 +1,45 @@
|
||||
/* blink.c -- user LED blink
|
||||
** Copyright (c) 2020 Renaud Fivet
|
||||
*/
|
||||
|
||||
/* Memory locations defined by linker script */
|
||||
extern long __StackTop ; /* &__StackTop points after end of stack */
|
||||
void Reset_Handler( void) ; /* Entry point for execution */
|
||||
|
||||
/* Interrupt vector table:
|
||||
* 1 Stack Pointer reset value
|
||||
* 15 System Exceptions
|
||||
* NN Device specific Interrupts
|
||||
*/
|
||||
typedef void (*isr_p)( void) ;
|
||||
isr_p const isr_vector[ 2] __attribute__((section(".isr_vector"))) = {
|
||||
(isr_p) &__StackTop,
|
||||
/* System Exceptions */
|
||||
Reset_Handler
|
||||
} ;
|
||||
|
||||
#define RCC ((volatile long *) 0x40021000)
|
||||
#define RCC_AHBENR RCC[ 5]
|
||||
#define RCC_AHBENR_IOPBEN 0x00040000 /* 18: I/O port B clock enable */
|
||||
|
||||
#define GPIOB ((volatile long *) 0x48000400)
|
||||
#define GPIOB_MODER GPIOB[ 0]
|
||||
#define GPIOB_ODR GPIOB[ 5]
|
||||
|
||||
void Reset_Handler( void) {
|
||||
int delay ;
|
||||
|
||||
/* User LED ON */
|
||||
RCC_AHBENR |= RCC_AHBENR_IOPBEN ; /* Enable IOPB periph */
|
||||
GPIOB_MODER |= 1 << (1 * 2) ; /* PB1 Output [01], over default 00 */
|
||||
/* OTYPER Push-Pull by default */
|
||||
/* PB1 output default LOW at reset */
|
||||
|
||||
/* User LED blink */
|
||||
for( ;;) {
|
||||
for( delay = 1000000 ; delay ; delay--) ; /* delay between toggling */
|
||||
GPIOB_ODR ^= 1 << 1 ; /* toggle PB1 (User LED) */
|
||||
}
|
||||
}
|
||||
|
||||
/* end of blink.c */
|
Reference in New Issue
Block a user