wip why does HSE run at 16MHz?
This commit is contained in:
+59
-21
@@ -2029,6 +2029,11 @@ struct rcc {
|
||||
#define RCC_CR_PLLON_ON (1 << RCC_CR_PLLON_BIT)
|
||||
|
||||
|
||||
#define RCC_CR_CSS_BIT 19
|
||||
#define RCC_CR_CSS_ON (1 << RCC_CR_CSS_BIT)
|
||||
|
||||
|
||||
|
||||
#define RCC_CR_HSERDY_BIT 17
|
||||
#define RCC_CR_HSERDY_READY (1 << RCC_CR_HSERDY_BIT)
|
||||
|
||||
@@ -2051,6 +2056,7 @@ struct rcc {
|
||||
|
||||
#define RCC_PLLCFGR_PLLSRC_BIT 22
|
||||
#define RCC_PLLCFGR_PLLSRC_HSE (1 << RCC_PLLCFGR_PLLSRC_BIT)
|
||||
#define RCC_PLLCFGR_PLLSRC_HSI (0 << RCC_PLLCFGR_PLLSRC_BIT)
|
||||
|
||||
#define RCC_PLLCFGR_PLLP_BIT 16
|
||||
#define RCC_PLLCFGR_PLLP_MASK (0b11)
|
||||
@@ -2070,6 +2076,19 @@ struct rcc {
|
||||
#define RCC_CFGR_PPRE_DIV_2 (0b100)
|
||||
|
||||
|
||||
#define RCC_CFGR_MCO1_HSI (0b00)
|
||||
#define RCC_CFGR_MCO1_HSE (0b10)
|
||||
#define RCC_CFGR_MCO1_PLL (0b11)
|
||||
|
||||
#define RCC_CFGR_MCO1_BIT 21
|
||||
#define RCC_CFGR_MCO1_MASK (0b11)
|
||||
|
||||
#define RCC_CFGR_MCO1PRE_DIV4 (0b110)
|
||||
|
||||
#define RCC_CFGR_MCO1PRE_BIT 24
|
||||
#define RCC_CFGR_MCO1PRE_MASK (0b111)
|
||||
|
||||
|
||||
#define RCC_CFGR_PPRE2_BIT 13
|
||||
#define RCC_CFGR_PPRE2_MASK (0b111)
|
||||
|
||||
@@ -2090,6 +2109,7 @@ struct rcc {
|
||||
#define RCC_CFGR_SWS_MASK (0b11)
|
||||
|
||||
|
||||
#define RCC_CFGR_SW_PLL (0b10)
|
||||
#define RCC_CFGR_SW_PLL (0b10)
|
||||
|
||||
#define RCC_CFGR_SW_BIT 0
|
||||
@@ -2135,13 +2155,21 @@ struct gpio {
|
||||
#define GPIOA ((struct gpio *) GPIOA_BASE_ADDR)
|
||||
|
||||
|
||||
#define GPIO_MODER_MODER3_BIT 7
|
||||
#define GPIO_MODER_AF_MODE (0b10)
|
||||
|
||||
#define GPIO_MODER_MODER8_BIT 16
|
||||
#define GPIO_MODER_MODER8_MASK (0b11)
|
||||
|
||||
#define GPIO_MODER_MODER3_BIT 6
|
||||
#define GPIO_MODER_MODER3_MASK (0b11)
|
||||
#define GPIO_MODER_MODER3_AF (0b10)
|
||||
|
||||
#define GPIO_MODER_MODER2_BIT 4
|
||||
#define GPIO_MODER_MODER2_MASK (0b11)
|
||||
#define GPIO_MODER_MODER2_AF (0b10)
|
||||
|
||||
|
||||
#define GPIO_AFRH_AFRH8_BIT 0
|
||||
#define GPIO_AFRH_AFRH8_MASK (0b1111)
|
||||
#define GPIO_AFRH_AFRH8_MCO_1 (0b0000)
|
||||
|
||||
|
||||
#define GPIO_AFRL_AFRL3_BIT 12
|
||||
@@ -2176,9 +2204,9 @@ typedef enum {
|
||||
|
||||
void gpio_set_mode(uint16_t pin, GPIO_MODE mode);
|
||||
void gpio_write(uint16_t pin,
|
||||
# 64 "src/gpio.h" 3 4
|
||||
# 72 "src/gpio.h" 3 4
|
||||
_Bool
|
||||
# 64 "src/gpio.h"
|
||||
# 72 "src/gpio.h"
|
||||
val);
|
||||
# 6 "src/main.c" 2
|
||||
# 1 "src/flash.h" 1
|
||||
@@ -2350,9 +2378,15 @@ static void system_clock_init(void) {
|
||||
((struct pwr *) (0x40007000U))->CR |= ((0b11) << 14);
|
||||
|
||||
|
||||
((struct rcc *) (0x40023800U))->CR &= ~(1 << 0);
|
||||
|
||||
|
||||
((struct rcc *) (0x40023800U))->CR |= (1 << 16);
|
||||
|
||||
|
||||
((struct rcc *) (0x40023800U))->CR |= (1 << 19);
|
||||
|
||||
|
||||
|
||||
while (!(((struct rcc *) (0x40023800U))->CR & (1 << 17)));
|
||||
|
||||
@@ -2361,10 +2395,11 @@ static void system_clock_init(void) {
|
||||
((struct rcc *) (0x40023800U))->CR &= ~(1 << 24);
|
||||
|
||||
|
||||
|
||||
((struct rcc *) (0x40023800U))->PLLCFGR |= (1 << 22);
|
||||
|
||||
|
||||
((struct rcc *) (0x40023800U))->PLLCFGR |= ((25 & (0b111111)) << 0) | ((196 & (0b111111111)) << 6) | ((2 & (0b11)) << 16) | ((4 & (0b1111)) << 24);
|
||||
((struct rcc *) (0x40023800U))->PLLCFGR |= ((25 & (0b111111)) << 0) | ((192 & (0b111111111)) << 6) | ((2 & (0b11)) << 16) | ((4 & (0b1111)) << 24);
|
||||
|
||||
|
||||
((struct rcc *) (0x40023800U))->CFGR &= ~((0b1111) << 4);
|
||||
@@ -2383,26 +2418,28 @@ static void system_clock_init(void) {
|
||||
|
||||
|
||||
|
||||
while (!(((struct rcc *) (0x40023800U))->CR & (1 << 17)));
|
||||
while (!(((struct rcc *) (0x40023800U))->CR & (1 << 25)));
|
||||
|
||||
|
||||
((struct flash *) (0x40023C00U))->ACR |= (1 <<10);
|
||||
((struct flash *) (0x40023C00U))->ACR |= (1 <<9);
|
||||
|
||||
|
||||
((struct flash *) (0x40023C00U))->ACR &= ~((0b1111) << 0);
|
||||
((struct rcc *) (0x40023800U))->CFGR |= ((0x0111) << 0);
|
||||
|
||||
|
||||
((struct rcc *) (0x40023800U))->CFGR &= ~((0b11) << 0);
|
||||
((struct rcc *) (0x40023800U))->CFGR |= ((0b10) << 0);
|
||||
# 75 "src/main.c"
|
||||
((struct rcc *) (0x40023800U))->CFGR |= (((0b10) & (0b11)) << 0);
|
||||
|
||||
|
||||
|
||||
while (((((struct rcc *) (0x40023800U))->CFGR >> 2) & (0b11)) != (0b10));
|
||||
|
||||
|
||||
((struct rcc *) (0x40023800U))->CR &= ~(1 << 0);
|
||||
|
||||
((struct rcc *) (0x40023800U))->CFGR &= ~((0b11) << 21);
|
||||
|
||||
|
||||
((struct rcc *) (0x40023800U))->CFGR |= ((0b00) << 21);
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
int main(void) {
|
||||
@@ -2419,20 +2456,21 @@ int main(void) {
|
||||
|
||||
uint16_t counter = ((struct timer *) (0x40000800U))->CNT;
|
||||
|
||||
# 90 "src/main.c" 3 4
|
||||
# 106 "src/main.c" 3 4
|
||||
_Bool
|
||||
# 90 "src/main.c"
|
||||
# 106 "src/main.c"
|
||||
led_on =
|
||||
# 90 "src/main.c" 3 4
|
||||
# 106 "src/main.c" 3 4
|
||||
((_Bool)+0u)
|
||||
# 90 "src/main.c"
|
||||
# 106 "src/main.c"
|
||||
;
|
||||
while(1) {
|
||||
|
||||
if ((((struct timer *) (0x40000800U))->CNT - counter) >= 250) {
|
||||
led_on = !led_on;
|
||||
gpio_write(led, led_on);
|
||||
|
||||
usart2_write("hello, world\n");
|
||||
usart2_write("U\n");
|
||||
|
||||
counter = ((struct timer *) (0x40000800U))->CNT;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user