1 # Taller de Sistemas Embebidos 2 3 ```console 4 . 5 |-- app 6 | |-- inc 7 | | |-- app_commented_read.me 8 | | |-- app.h 9 | | |-- board.h 10 | | |-- dwt.h 11 | | |-- logger.h 12 | | |-- systick.h 13 | | |-- task_a.h 14 | | |-- task_b.h 15 | | `-- task_c.h 16 | |-- src 17 | | |-- app.c 18 | | |-- app_commented_read.me 19 | | |-- logger.c 20 | | |-- systick.c 21 | | |-- task_a.c 22 | | |-- task_a_commented_read.me 23 | | |-- task_b.c 24 | | |-- task_b_commented_read.me 25 | | `-- task_c.c 26 | |-- app.txt 27 | |-- readme.txt 28 | `-- task_x.txt 29 |-- Core 30 | |-- Inc 31 | | |-- main.h 32 | | |-- stm32f1xx_hal_conf.h 33 | | `-- stm32f1xx_it.h 34 | |-- Src 35 | | |-- main.c 36 | | |-- stm32f1xx_hal_msp.c 37 | | |-- stm32f1xx_it.c 38 | | |-- syscalls.c 39 | | |-- sysmem.c 40 | | `-- system_stm32f1xx.c 41 | `-- Startup 42 | `-- startup_stm32f103rbtx.s 43 |-- Debug 44 | |-- app 45 | | `-- src 46 | |-- Core 47 | | |-- Src 48 | | `-- Startup 49 | |-- Drivers 50 | | `-- STM32F1xx_HAL_Driver 51 | |-- makefile 52 | |-- objects.list 53 | |-- objects.mk 54 | |-- sources.mk 55 | |-- tdse-tp0_03-hw_sw_test.elf 56 | |-- tdse-tp0_03-hw_sw_test.list 57 | `-- tdse-tp0_03-hw_sw_test.map 58 |-- Drivers 59 | |-- CMSIS 60 | | |-- Device 61 | | |-- Include 62 | | `-- LICENSE.txt 63 | `-- STM32F1xx_HAL_Driver 64 | |-- Inc 65 | |-- Src 66 | `-- LICENSE.txt 67 |-- README.md 68 |-- STM32F103RBTX_FLASH.ld 69 |-- tdse-tp0_03-hw_sw_test.cfg 70 |-- tdse-tp0_03-hw_sw_test.ioc 71 `-- tdse-tp0_03-hw_sw_test.launch 72 73 23 directories, 45 files 74 ``` 75 76 ## Archivo `Core/Startup/startup_stm32f103rbtx.s` 77 78 Esta escrito en arm assembly y se ejecuta al resetear el microcontrolador, el 79 propósito es inicializar los registros principales (como el stack pointer o el 80 program counter) la memoria y periféricos, para finalmente transferir el 81 control a la aplicación principal, la cual el punto de entrada es la función 82 `main()`, esto se puede ver en la linea 100 del archivo, en la cual se ejecuta 83 una instrucción `bl` (branch with link) y luego el símbolo `main`. El único tipo 84 de dato utilizado es `word` que representa una variable de 4 bytes (o 32 bits). 85 86 ## Archivo `Core/Src/main.c` 87 88 El archivo `main.c` es un archivo escrito en C que contiene el punto de entrada 89 del programa principal, este punto de entrada es invocado al momento de 90 inicializar el microcontrolador, como se mencionó previamente. El patrón de 91 diseño de este archivo es procedural, ya que la ejecución del programa se lleva 92 a cabo mediante la invocación de diferentes funciones o subrutinas. 93 94 Los métodos que se encuentran en este archivo además de la (función principal 95 `main`) son: `initialise_monitor_handles`, `HAL_Init`, `SystemClock_Config`, 96 `MX_GPIO_Init`, `MX_USART2_UART_Init`, `app_init`, `app_update`, 97 `Error_Handler`. 98 99 ## Archivo `Core/app/app.c` 100 101 En este archivo se definen las funciones `app_init`,`app_update` que se invocan 102 en la función `main`, y el callback `HAL_SYSTICK_Callback`, este ultimo es 103 llamado automáticamente
