Цитата(ArtTheft @ Aug 15 2014, 15:57)

Если я буду прошивать через SWD, надо чтобы выходы BOOT0, BOOT1 были подключены по правилу прошивки через USART?
Самому SWD пофиг, он при любом варианте сможет записать флешь, но Вы же хотите чтобы после ресета запустилась прошитая программа, а не встроенный загрузчик. Следовательно, по крайней мере BOOT0 должен быть в "0" (а состояние BOOT1 в этом случае безразлично).
Насчёт софта.
Примеры и библиотеки из STM32F10x_StdPeriph_Lib тут уже упоминались.
Их никак нельзя признать за образец хорошего стиля, но почитать/посмотреть можно. Но поскольку для использования этих библиотек даташит всё равно изучать придётся, то проще (по моему скромному мнению) в процессе изучения сразу писать своё, сэкономите кучу времени, избавившись от необходимости разбираться как же эти библиотеки устроены и как их использовать.
Абсолютный минимум, необходимый для написания простейшей программы для STM32, состоит из трёх файлов:
1. startup_stm32f10x_md_vl.s - в нём описаны вектора прерываний (для Вашего процессора), в том числе и Reset_Handler, в его обработчике вызывается функция SystemInit и происходит переход на код, сгенерированный компилятором.
2. system_stm32f10x.c - в нём реализация функции SystemInit()
3. ещё один файл, с функцией main()
Ещё потребуется файл для линкера с описанием размещения сегментов кода и данных, его можно позаимствовать из примеров.
Для начала можно не заморачиваться инициализацией системы тактирования, проц стартует на внутреннем генераторе (HSI), его точности хватает для работы UART-а.