Advertisement
teplofizik

stm32f4xx.inc (6)

Oct 1st, 2012
312
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ; STM32F4xx.inc
  2. ; http://teplofizik.diary.ru/p181188784.htm
  3. ; Файл описания периферии STM32F4xx.
  4.  
  5.     AREA    |.text|, CODE, READONLY
  6.  
  7. ; ======================================================================
  8. ; CONTROL
  9. ; Режим доступа: Priveleged
  10. ; Доступ через MSR, MRS команды.
  11. CONTROL_nPRIV         EQU 0x00000001 ; Снятие привелегий с Thread Mode
  12. CONTROL_SPSEL         EQU 0x00000002 ; Выбор стекового регистра для Handler Mode (0: MSP, 1: PSP)
  13. CONTROL_FPCA          EQU 0x00000004 ; Сохранение контекста FPU
  14.  
  15. ; ======================================================================
  16. ; SHCSR - System handler control and state register
  17. SHCSR                 EQU 0xE000ED24
  18.  
  19. SHCSR_MEMFAULTACT     EQU 0x00000001 ;  0 бит
  20. SHCSR_BUSFAULTACT     EQU 0x00000002 ;  1 бит
  21. SHCSR_USGFAULTACT     EQU 0x00000008 ;  3 бит
  22. SHCSR_SVCALLACT       EQU 0x00000080 ;  7 бит
  23. SHCSR_MONITORACT      EQU 0x00000100 ;  8 бит
  24. SHCSR_PENDSVACT       EQU 0x00000400 ; 10 бит
  25. SHCSR_SYSTICKACT      EQU 0x00000800 ; 11 бит
  26. SHCSR_USGFAULTPENDED  EQU 0x00001000 ; 12 бит
  27. SHCSR_MEMFAULTPENDED  EQU 0x00002000 ; 13 бит
  28. SHCSR_BUSFAULTPENDED  EQU 0x00004000 ; 14 бит
  29. SHCSR_SVCALLPENDED    EQU 0x00008000 ; 15 бит
  30. SHCSR_MEMFAULTENA     EQU 0x00010000 ; 16 бит
  31. SHCSR_BUSFAULTENA     EQU 0x00020000 ; 17 бит
  32. SHCSR_USGFAULTENA     EQU 0x00040000 ; 18 бит
  33.  
  34. ; ======================================================================
  35. ; ICSR - Interrupt control and state register
  36. ICSR                  EQU 0xE000ED04
  37.  
  38. ICSR_PENDSVSET        EQU 0x10000000 ; 28 бит
  39.  
  40. ; ======================================================================
  41. ; RCC
  42. RCC_AHB1ENR           EQU 0x40023830
  43. RCC_AHB1ENR_GPIOAEN   EQU 0x00000001 ; GPIOA
  44. RCC_AHB1ENR_GPIOBEN   EQU 0x00000002 ; GPIOB
  45. RCC_AHB1ENR_GPIOCEN   EQU 0x00000004 ; GPIOC
  46. RCC_AHB1ENR_GPIODEN   EQU 0x00000008 ; GPIOD
  47. RCC_AHB1ENR_GPIOEEN   EQU 0x00000010 ; GPIOE
  48.  
  49. RCC_APB1ENR           EQU 0x40023840
  50. RCC_APB1ENR_TIM2EN    EQU 0x00000001 ; TIM2
  51. RCC_APB1ENR_TIM3EN    EQU 0x00000002 ; TIM3
  52. RCC_APB1ENR_TIM4EN    EQU 0x00000004 ; TIM4
  53. RCC_APB1ENR_TIM5EN    EQU 0x00000008 ; TIM5
  54. RCC_APB1ENR_TIM6EN    EQU 0x00000010 ; TIM6
  55. RCC_APB1ENR_TIM7EN    EQU 0x00000020 ; TIM7
  56. RCC_APB1ENR_TIM12EN   EQU 0x00000040 ; TIM12
  57. RCC_APB1ENR_TIM13EN   EQU 0x00000080 ; TIM13
  58. RCC_APB1ENR_TIM14EN   EQU 0x00000100 ; TIM14
  59.  
  60. RCC_APB2ENR           EQU 0x40023844
  61. RCC_APB2ENR_SPI1EN    EQU 0x00001000 ; SPI1
  62.  
  63.  
  64. ; ======================================================================
  65. ; SysTick Timer
  66. ; Режим доступа: Priveleged
  67. STK_BASE              EQU 0xE000E010
  68.  
  69. STK_CTRL_OFFSET       EQU 0x00000000 ; Регистр управления и статус
  70. STK_LOAD_OFFSET       EQU 0x00000004 ; Значение для перезагрузки таймера
  71. STK_VAL_OFFSET        EQU 0x00000008 ; Текущее значение
  72. STK_CALIB_OFFSET      EQU 0x0000000C ; Калибрация
  73.  
  74. STK_CTRL_ENABLE       EQU 0x00000001 ; Разрешение работы таймера
  75. STK_CTRL_TICKINT      EQU 0x00000002 ; Разрешение прерывания
  76. STK_CTRL_CLKSOURCE    EQU 0x00000004 ; Источник тактирования
  77.                                      ; 0 - AHB / 8
  78.                                      ; 1 - AHB
  79. STK_CTRL_COUNTFLAG    EQU 0x00010000 ; Досчитал ли до нуля?
  80.  
  81.  
  82. ; ======================================================================
  83. ; GPIO
  84. GPIOA_BASE            EQU 0x40020000
  85. GPIOB_BASE            EQU 0x40020400
  86. GPIOC_BASE            EQU 0x40020800
  87. GPIOD_BASE            EQU 0x40020C00
  88. GPIOE_BASE            EQU 0x40021000
  89.  
  90. ; Регистры
  91. GPIO_MODER_OFFSET     EQU 0x00000000 ; GPIOx->MODER
  92. GPIO_OTYPER_OFFSET    EQU 0x00000004 ; GPIOx->OTYPER
  93. GPIO_OSPEEDR_OFFSET   EQU 0x00000008 ; GPIOx->OSPEEDR
  94. GPIO_PUPDR_OFFSET     EQU 0x0000000C ; GPIOx->PUPDR
  95. GPIO_IDR_OFFSET       EQU 0x00000010 ; GPIOx->IDR
  96. GPIO_ODR_OFFSET       EQU 0x00000014 ; GPIOx->ODR
  97. GPIO_BSRRL_OFFSET     EQU 0x00000018 ; GPIOx->BSRRL Сброс
  98. GPIO_BSRRH_OFFSET     EQU 0x0000001A ; GPIOx->BSRRH Установка
  99. GPIO_LCKR_OFFSET      EQU 0x0000001C ; GPIOx->LCKR
  100. GPIO_AFRL_OFFSET      EQU 0x00000020 ; GPIOx->AFRL
  101. GPIO_AFRH_OFFSET      EQU 0x00000024 ; GPIOx->AFRH
  102.  
  103. ; GPIOx->OSPEEDR
  104. ; Режим: 25 МГц
  105. GPIO_OSPEEDR_OSPEEDR0_0   EQU 0x00000001
  106. GPIO_OSPEEDR_OSPEEDR1_0   EQU 0x00000004
  107. GPIO_OSPEEDR_OSPEEDR2_0   EQU 0x00000010
  108. GPIO_OSPEEDR_OSPEEDR3_0   EQU 0x00000040
  109. GPIO_OSPEEDR_OSPEEDR4_0   EQU 0x00000100
  110. GPIO_OSPEEDR_OSPEEDR5_0   EQU 0x00000400
  111. GPIO_OSPEEDR_OSPEEDR6_0   EQU 0x00001000
  112. GPIO_OSPEEDR_OSPEEDR7_0   EQU 0x00004000
  113. GPIO_OSPEEDR_OSPEEDR8_0   EQU 0x00010000
  114. GPIO_OSPEEDR_OSPEEDR9_0   EQU 0x00040000
  115. GPIO_OSPEEDR_OSPEEDR10_0  EQU 0x00100000
  116. GPIO_OSPEEDR_OSPEEDR11_0  EQU 0x00400000
  117. GPIO_OSPEEDR_OSPEEDR12_0  EQU 0x01000000
  118. GPIO_OSPEEDR_OSPEEDR13_0  EQU 0x04000000
  119. GPIO_OSPEEDR_OSPEEDR14_0  EQU 0x10000000
  120. GPIO_OSPEEDR_OSPEEDR15_0  EQU 0x40000000
  121.  
  122. ; GPIOx->OSPEEDR
  123. ; Режим: 50 МГц
  124. GPIO_OSPEEDR_OSPEEDR0_1   EQU 0x00000002
  125. GPIO_OSPEEDR_OSPEEDR1_1   EQU 0x00000008
  126. GPIO_OSPEEDR_OSPEEDR2_1   EQU 0x00000020
  127. GPIO_OSPEEDR_OSPEEDR3_1   EQU 0x00000080
  128. GPIO_OSPEEDR_OSPEEDR4_1   EQU 0x00000200
  129. GPIO_OSPEEDR_OSPEEDR5_1   EQU 0x00000800
  130. GPIO_OSPEEDR_OSPEEDR6_1   EQU 0x00002000
  131. GPIO_OSPEEDR_OSPEEDR7_1   EQU 0x00008000
  132. GPIO_OSPEEDR_OSPEEDR8_1   EQU 0x00020000
  133. GPIO_OSPEEDR_OSPEEDR9_1   EQU 0x00080000
  134. GPIO_OSPEEDR_OSPEEDR10_1  EQU 0x00200000
  135. GPIO_OSPEEDR_OSPEEDR11_1  EQU 0x00800000
  136. GPIO_OSPEEDR_OSPEEDR12_1  EQU 0x02000000
  137. GPIO_OSPEEDR_OSPEEDR13_1  EQU 0x08000000
  138. GPIO_OSPEEDR_OSPEEDR14_1  EQU 0x20000000
  139. GPIO_OSPEEDR_OSPEEDR15_1  EQU 0x80000000
  140.  
  141. ; GPIOx->MODER
  142. ; Режим: цифровой выход
  143. GPIO_MODER_MODER0_0   EQU 0x00000001
  144. GPIO_MODER_MODER1_0   EQU 0x00000004
  145. GPIO_MODER_MODER2_0   EQU 0x00000010
  146. GPIO_MODER_MODER3_0   EQU 0x00000040
  147. GPIO_MODER_MODER4_0   EQU 0x00000100
  148. GPIO_MODER_MODER5_0   EQU 0x00000400
  149. GPIO_MODER_MODER6_0   EQU 0x00001000
  150. GPIO_MODER_MODER7_0   EQU 0x00004000
  151. GPIO_MODER_MODER8_0   EQU 0x00010000
  152. GPIO_MODER_MODER9_0   EQU 0x00040000
  153. GPIO_MODER_MODER10_0  EQU 0x00100000
  154. GPIO_MODER_MODER11_0  EQU 0x00400000
  155. GPIO_MODER_MODER12_0  EQU 0x01000000
  156. GPIO_MODER_MODER13_0  EQU 0x04000000
  157. GPIO_MODER_MODER14_0  EQU 0x10000000
  158. GPIO_MODER_MODER15_0  EQU 0x40000000
  159.  
  160. ; GPIOx->MODER
  161. ; Режим: альтернативная функция
  162. GPIO_MODER_MODER0_1   EQU 0x00000002
  163. GPIO_MODER_MODER1_1   EQU 0x00000008
  164. GPIO_MODER_MODER2_1   EQU 0x00000020
  165. GPIO_MODER_MODER3_1   EQU 0x00000080
  166. GPIO_MODER_MODER4_1   EQU 0x00000200
  167. GPIO_MODER_MODER5_1   EQU 0x00000800
  168. GPIO_MODER_MODER6_1   EQU 0x00002000
  169. GPIO_MODER_MODER7_1   EQU 0x00008000
  170. GPIO_MODER_MODER8_1   EQU 0x00020000
  171. GPIO_MODER_MODER9_1   EQU 0x00080000
  172. GPIO_MODER_MODER10_1  EQU 0x00200000
  173. GPIO_MODER_MODER11_1  EQU 0x00800000
  174. GPIO_MODER_MODER12_1  EQU 0x02000000
  175. GPIO_MODER_MODER13_1  EQU 0x08000000
  176. GPIO_MODER_MODER14_1  EQU 0x20000000
  177. GPIO_MODER_MODER15_1  EQU 0x80000000
  178.  
  179. ; GPIOx->PUPDR
  180. ; Режим: подтяжка к питанию (pull-up)
  181. GPIO_PUPDR_PUPDR0_0   EQU 0x00000001
  182. GPIO_PUPDR_PUPDR1_0   EQU 0x00000004
  183. GPIO_PUPDR_PUPDR2_0   EQU 0x00000010
  184. GPIO_PUPDR_PUPDR3_0   EQU 0x00000040
  185. GPIO_PUPDR_PUPDR4_0   EQU 0x00000100
  186. GPIO_PUPDR_PUPDR5_0   EQU 0x00000400
  187. GPIO_PUPDR_PUPDR6_0   EQU 0x00001000
  188. GPIO_PUPDR_PUPDR7_0   EQU 0x00004000
  189. GPIO_PUPDR_PUPDR8_0   EQU 0x00010000
  190. GPIO_PUPDR_PUPDR9_0   EQU 0x00040000
  191. GPIO_PUPDR_PUPDR10_0  EQU 0x00100000
  192. GPIO_PUPDR_PUPDR11_0  EQU 0x00400000
  193. GPIO_PUPDR_PUPDR12_0  EQU 0x01000000
  194. GPIO_PUPDR_PUPDR13_0  EQU 0x04000000
  195. GPIO_PUPDR_PUPDR14_0  EQU 0x10000000
  196. GPIO_PUPDR_PUPDR15_0  EQU 0x40000000
  197.  
  198. ; GPIOx->PUPDR
  199. ; Режим: подтяжка к земле (pull-down)
  200. GPIO_PUPDR_PUPDR0_1   EQU 0x00000002
  201. GPIO_PUPDR_PUPDR1_1   EQU 0x00000008
  202. GPIO_PUPDR_PUPDR2_1   EQU 0x00000020
  203. GPIO_PUPDR_PUPDR3_1   EQU 0x00000080
  204. GPIO_PUPDR_PUPDR4_1   EQU 0x00000200
  205. GPIO_PUPDR_PUPDR5_1   EQU 0x00000800
  206. GPIO_PUPDR_PUPDR6_1   EQU 0x00002000
  207. GPIO_PUPDR_PUPDR7_1   EQU 0x00008000
  208. GPIO_PUPDR_PUPDR8_1   EQU 0x00020000
  209. GPIO_PUPDR_PUPDR9_1   EQU 0x00080000
  210. GPIO_PUPDR_PUPDR10_1  EQU 0x00200000
  211. GPIO_PUPDR_PUPDR11_1  EQU 0x00800000
  212. GPIO_PUPDR_PUPDR12_1  EQU 0x02000000
  213. GPIO_PUPDR_PUPDR13_1  EQU 0x08000000
  214. GPIO_PUPDR_PUPDR14_1  EQU 0x20000000
  215. GPIO_PUPDR_PUPDR15_1  EQU 0x80000000
  216.  
  217. ; GPIOx->BSSR
  218. ; Маска выводов
  219. GPIO_BSSR_PIN0        EQU 0x00000001 ; 0 бит
  220. GPIO_BSSR_PIN1        EQU 0x00000002 ; 1 бит
  221. GPIO_BSSR_PIN2        EQU 0x00000004 ; 2 бит
  222. GPIO_BSSR_PIN3        EQU 0x00000008 ; 3 бит
  223. GPIO_BSSR_PIN4        EQU 0x00000010 ; 4 бит
  224. GPIO_BSSR_PIN5        EQU 0x00000020 ; 5 бит
  225. GPIO_BSSR_PIN6        EQU 0x00000040 ; 6 бит
  226. GPIO_BSSR_PIN7        EQU 0x00000080 ; 7 бит
  227. GPIO_BSSR_PIN8        EQU 0x00000100 ; 8 бит
  228. GPIO_BSSR_PIN9        EQU 0x00000200 ; 9 бит
  229. GPIO_BSSR_PIN10       EQU 0x00000400 ; 10 бит
  230. GPIO_BSSR_PIN11       EQU 0x00000800 ; 11 бит
  231. GPIO_BSSR_PIN12       EQU 0x00001000 ; 12 бит
  232. GPIO_BSSR_PIN13       EQU 0x00002000 ; 13 бит
  233. GPIO_BSSR_PIN14       EQU 0x00004000 ; 14 бит
  234. GPIO_BSSR_PIN15       EQU 0x00008000 ; 15 бит
  235.  
  236. ; ======================================================================
  237. ; SPI
  238. SPI1_BASE             EQU 0x40013000
  239.  
  240. ; Регистры
  241. SPI_CR1_OFFSET        EQU 0x00000000 ; SPI->CR1
  242. SPI_CR2_OFFSET        EQU 0x00000004 ; SPI->CR2
  243. SPI_SR_OFFSET         EQU 0x00000008 ; SPI->SR
  244. SPI_DR_OFFSET         EQU 0x0000000C ; SPI->DR
  245. SPI_CRCPR_OFFSET      EQU 0x00000010 ; SPI->CRCPR
  246. SPI_RXCRCR_OFFSET     EQU 0x00000014 ; SPI->RXCRCR
  247. SPI_TXCRCR_OFFSET     EQU 0x00000018 ; SPI->TXCRCR
  248. SPI_I2SCFGR_OFFSET    EQU 0x0000001C ; SPI->I2SCFGR
  249. SPI_I2SPR_OFFSET      EQU 0x00000020 ; SPI->I2SPR
  250.  
  251. ; SPI->CR1
  252. ; Биты настройки
  253. SPI_CR1_CPHA          EQU 0x0001 ; Clock phase
  254. SPI_CR1_CPOL          EQU 0x0002 ; Clock Polarity
  255. SPI_CR1_MSTR          EQU 0x0004 ; Master Selection
  256.  
  257. SPI_CR1_BR            EQU 0x0038 ; BR[2:0] bits (Baud Rate Control)
  258. SPI_CR1_BR_0          EQU 0x0008 ; Bit 0
  259. SPI_CR1_BR_1          EQU 0x0010 ; Bit 1
  260. SPI_CR1_BR_2          EQU 0x0020 ; Bit 2
  261.  
  262. SPI_CR1_SPE           EQU 0x0040 ; SPI Enable
  263. SPI_CR1_LSBFIRST      EQU 0x0080 ; Frame Format
  264. SPI_CR1_SSI           EQU 0x0100 ; Internal slave select
  265. SPI_CR1_SSM           EQU 0x0200 ; Software slave management
  266. SPI_CR1_RXONLY        EQU 0x0400 ; Receive only
  267. SPI_CR1_DFF           EQU 0x0800 ; Data Frame Format
  268. SPI_CR1_CRCNEXT       EQU 0x1000 ; Transmit CRC next
  269. SPI_CR1_CRCEN         EQU 0x2000 ; Hardware CRC calculation enable
  270. SPI_CR1_BIDIOE        EQU 0x4000 ; Output enable in bidirectional mode
  271. SPI_CR1_BIDIMODE      EQU 0x8000 ; Bidirectional data mode enable
  272.  
  273. ; SPI->SR
  274. ; Флаги состояния модуля
  275. SPI_SR_RXNE           EQU 0x01 ; Receive buffer Not Empty
  276. SPI_SR_TXE            EQU 0x02 ; Transmit buffer Empty
  277. SPI_SR_CHSIDE         EQU 0x04 ; Channel side
  278. SPI_SR_UDR            EQU 0x08 ; Underrun flag
  279. SPI_SR_CRCERR         EQU 0x10 ; CRC Error flag
  280. SPI_SR_MODF           EQU 0x20 ; Mode fault
  281. SPI_SR_OVR            EQU 0x40 ; Overrun flag
  282. SPI_SR_BSY            EQU 0x80 ; Busy flag
  283.  
  284. ; ======================================================================
  285. ; TIMER1, TIMER2-5, TIMER6-7, TIMER9, TIMER12-14, TIMER8
  286.  
  287. ; Базовые адреса таймеров
  288. TIMER1_BASE           EQU 0x40010000 ; Advanced timer
  289. TIMER2_BASE           EQU 0x40000000 ; General purpose timers
  290. TIMER3_BASE           EQU 0x40000400 ; General purpose timers
  291. TIMER4_BASE           EQU 0x40000800 ; General purpose timers
  292. TIMER5_BASE           EQU 0x40000C00 ; General purpose timers
  293. TIMER6_BASE           EQU 0x40001000 ; Basic timers
  294. TIMER7_BASE           EQU 0x40001400 ; Basic timers
  295. TIMER8_BASE           EQU 0x40010400 ; Advanced timer
  296. TIMER9_BASE           EQU 0x40014000
  297. TIMER10_BASE          EQU 0x40014400
  298. TIMER11_BASE          EQU 0x40014800
  299. TIMER12_BASE          EQU 0x40001800
  300. TIMER13_BASE          EQU 0x40001C00
  301. TIMER14_BASE          EQU 0x40002000
  302.  
  303. ; Регистры
  304. TIM_CR1_OFFSET        EQU 0x00000000 ; TIM->CR1
  305. TIM_CR2_OFFSET        EQU 0x00000004 ; TIM->CR2
  306. TIM_DIER_OFFSET       EQU 0x0000000C ; TIM->DIER
  307. TIM_SR_OFFSET         EQU 0x00000010 ; TIM->SR
  308. TIM_EGR_OFFSET        EQU 0x00000014 ; TIM->EGR
  309. TIM_CNT_OFFSET        EQU 0x00000024 ; TIM->CNT
  310. TIM_PSC_OFFSET        EQU 0x00000028 ; TIM->PSC
  311. TIM_ARR_OFFSET        EQU 0x0000002C ; TIM->ARR
  312.  
  313. ; TIM->CR1
  314. ; Флаги управления таймером
  315. TIM_CR1_CEN           EQU 0x01 ; Counter enable
  316. TIM_CR1_UDIS          EQU 0x02 ; Update disable
  317. TIM_CR1_URS           EQU 0x04 ; Update request source
  318. TIM_CR1_OPM           EQU 0x08 ; One-pulse mode
  319. TIM_CR1_ARPE          EQU 0x80 ; Auto-reload preload enable
  320.  
  321. ; TIM->SR
  322. ; Флаги состояния таймера
  323. TIM_SR_UIF            EQU 0x01 ; Update interrupt flag
  324.  
  325.  
  326.     END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement