Select Git revision
matimage.py
-
Neil Gershenfeld authoredNeil Gershenfeld authored
blink.c 1.75 KiB
//
// blink.c
//
// blink STM32 LED
//
// Neil Gershenfeld 3/11/13
//
// includes
//
#include "stm32f10x.h"
//
// definitions
//
#define STACK_TOP 0x20001000
//
// prototypes
//
int main(void);
void delay(unsigned long delay_count);
//
// declarations
//
GPIO_InitTypeDef GPIO_InitStructure;
//
// vector table
//
unsigned int * myvectors[2]
__attribute__ ((section("vectors"))) = {
(unsigned int *) STACK_TOP, // stack pointer
(unsigned int *) main // code entry point
};
//
// functions
//
void delay(unsigned long delay_count) {
while(delay_count > 0)
--delay_count;
}
//
// main
//
int main(void) {
//
// init clocks
//
RCC_HSEConfig(RCC_HSE_ON); // enable external HSE clock (8 MHz)
while (RCC_GetFlagStatus(RCC_FLAG_HSERDY) == RESET); // wait until HSE is ready
RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9); // set PLL source to HSE, multiplier to 9 (72 MHz)
RCC_PLLCmd(ENABLE); // enable PLL
while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET); // wait until PLL is ready
FLASH_SetLatency(FLASH_Latency_2); // flash 2 wait state
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); // set PLL as system clock
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); // enable GPIOC clock
//
// init output
//
GPIO_StructInit(&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure);
//
// main loop
//
while(1) {
GPIO_WriteBit(GPIOC, GPIO_Pin_12, Bit_RESET);
delay(1000000);
GPIO_WriteBit(GPIOC, GPIO_Pin_12, Bit_SET);
delay(1000000);
}
}