]>
wirehaze git hosting - stm32f411ceu6.git/blob - kernel.c
4 const char msg
[] = "blink ";
9 volatile unsigned int i
;
10 for (i
= 0; i
< 500000; i
++);
16 unsigned int *src
, *dst
;
19 /* relocate .data to sram */
20 src
= &_data_lma_start
;
21 dst
= &_data_vma_start
;
23 while (dst
< &_data_vma_end
)
27 dst
= &_bss_vma_start
;
29 while (dst
< &_bss_vma_end
)
32 /* (todo) usart pin setup (alt func and enable port clock) */
34 /* UE: USART enable */
35 *USART_CR1
|= (1u << 13); /* 1: USART enable */
37 *USART_CR1
&= ~(1u << 12); /* 0: 1 Start bit, 8 Data bits, n Stop bit */
39 *USART_CR2
&= ~(3u << 12); /* 00: 1 Stop bit */
40 /* the clock frequnecy is 16mhz initially, so for a baud rate of 115.2 KBps we
41 * need to set USARTDIV=8.6875 */
42 *USART_BRR
= (8u << 4) | 11; /* mantissa and fraction (/16) */
43 /* TE: Transmitter enable */
44 *USART_CR1
|= (1u << 3); /* 1: Transmitter is enabled */
46 /* blink blink setup */
47 *RCC_AHB1ENR
|= (1u << 2);
48 *GPIOC_MODER
&= ~(3u << 26);
49 *GPIOC_MODER
|= (1u << 26);
57 /* TXE: Transmit data register empty */
58 if (!(*USART_SR
& (1u << 7)))
61 *USART_DR
= msg
[off
++];
63 while (off
< sizeof msg
);
66 *GPIOC_ODR
^= (1u << 13);
71 __attribute__ ((section (".vector_table"), used
))
72 static unsigned long const vector_table
[] = {
73 (unsigned long) &_sram_end
,
74 (unsigned long) reset_handler
,