|
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
|
||||||
Stm32f103 примитивная работа с таймерами на ассемблере05.06.2021, 00:36. Показов 7540. Ответов 59
здрасьте. не думал, что так может процессе гуглежа попал на один из российский форумов разработчиков в тему, где кто-то просит помочь разобраться в таймерах и это оказался мой одногруппник. я прочитал тему и мне стало интересно, попытался разобраться, но не смог. Скажите, есть тут люди, которые хорошо разбирается в таймерах? я не могу сформулировать лучше вопрос, чем мой одногруппник, поэтому просто спрошу как он
если вам несложно то скажите что имено необходимо для TIM1 чтобы взаимодействовать со светодиодом. как этот таймер включает и выключает его? счетчик достиг нуля, какое именно прерывание и как сработает? просто мне непонятно, TIM1 заявлен как очень настраиваемый таймер, и поэтому было бы логично ему иметь не свои собственные прерывания ,а работать с прерываниями тех устройств, для которых таймер тикает. действительно, какое имено нужно прерывание для того чтобы светодиод зажегся или погас?
0
|
||||||
| 05.06.2021, 00:36 | |
|
Ответы с готовыми решениями:
59
Работа с таймерами Работа с таймерами Работа с таймерами |
|
Модератор
|
|
| 06.06.2021, 07:39 | |
|
COKPOWEHEU, я имел ввиду устройство, которое друг TC предположительно пытается программировать.
https://github.com/beckus/qemu... 2_f103c8.c Чтобы догадаться, что это за платка, нужно было гуглить исходный вопрос на других форумах?
0
|
|
|
4146 / 2724 / 433
Регистрация: 09.09.2017
Сообщений: 12,070
|
|||||
| 06.06.2021, 08:26 | |||||
|
Например, в моем примере за настройку таймера отвечает 6 строк, плюс одна в обработчике прерывания. Вы можете свериться с рефманом и прокомментировать что каждая из них делает и зачем нужна? Плюс две строки на настройку прерываний, с ними чуть сложнее.
1
|
|||||
|
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
|
|
| 06.06.2021, 20:59 [ТС] | |
|
0
|
|
|
Модератор
|
||||||||||||||||||||||||||
| 07.06.2021, 13:39 | ||||||||||||||||||||||||||
|
Что там делает директива
.section .text?Предписывает ассемблеру переключиться с секции .textна секцию .text?
1
|
||||||||||||||||||||||||||
|
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
|
||||||||
| 07.06.2021, 20:34 [ТС] | ||||||||
Сообщение было отмечено politoto как решение
Решение
politoto,
ребята с форума моего одногруппника посоветовали ему так. я просто скопипастил. это не мой код.
Добавлено через 1 час 32 минуты politoto,
1
|
||||||||
|
Модератор
|
|||||||||||||
| 07.06.2021, 21:34 | |||||||||||||
.text, ассемблер разместил в той же секции, что и вышенаписанную таблицу. GNU as создаёт 3 секции даже из пустого исходника:
1
|
|||||||||||||
|
4146 / 2724 / 433
Регистрация: 09.09.2017
Сообщений: 12,070
|
||
| 07.06.2021, 22:37 | ||
|
1
|
||
|
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
|
|||||
| 08.06.2021, 02:11 [ТС] | |||||
|
politoto,
Добавлено через 7 минут COKPOWEHEU, Добавлено через 1 минуту да я вам сам напишу. вы на Linux? в IDE или без?
0
|
|||||
|
4146 / 2724 / 433
Регистрация: 09.09.2017
Сообщений: 12,070
|
||||
| 08.06.2021, 08:23 | ||||
|
Я потому и не даю готового решения, что найти соответствующий код в интернете несложно. Адаптировать даже мой Си-шный код несложно (тем более что приложил-то я уже дизассемблированный). Для меня написать ассемблерный код по вашему условию особой сложности не представляет, но вам это в понимании не поможет никак. Уверен, лично politoto пользоваться вашим кодом не будет. А если и будет, то уж команду компиляции как-нибудь сообразит.
0
|
||||
|
Модератор
|
||||||||||||||||||||||||||||||||||||||||||
| 08.06.2021, 09:49 | ||||||||||||||||||||||||||||||||||||||||||
ld выполняет по командам из явных и неявных скриптов компоновщика и параметрам командной строки. Конечно, секции и символы, определённые во входных объектных файлах, влияют на распределение сегментов по адресному пространству. Совсем не использовать .section для as из GNU binutils - то же самое, что выдать
Возьмём пример из Вашего сообщения Stm32f103 примитивная работа с таймерами на ассемблере и его в with.sСделаем по нему прошивочный файл cat > ./build.sh
. ./build.sh with.sКликните здесь для просмотра всего текста
Memory Configuration
Name Origin Length Attributes *default* 0x0000000000000000 0xffffffffffffffff Linker script and memory map LOAD with.s.o Address of section .text set to 0x8000000 [!provide] PROVIDE (__executable_start = SEGMENT_START ("text-segment", 0x8000)) 0x0000000000008000 . = SEGMENT_START ("text-segment", 0x8000) .interp *(.interp) .note.gnu.build-id *(.note.gnu.build-id) .hash *(.hash) .gnu.hash *(.gnu.hash) .dynsym *(.dynsym) .dynstr *(.dynstr) .gnu.version *(.gnu.version) .gnu.version_d *(.gnu.version_d) .gnu.version_r *(.gnu.version_r) .rel.dyn 0x0000000000008000 0x0 *(.rel.init) *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) *(.rel.fini) *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) *(.rel.ctors) *(.rel.dtors) *(.rel.got) *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) [!provide] PROVIDE (__rel_iplt_start = .) *(.rel.iplt) .rel.iplt 0x0000000000008000 0x0 with.s.o [!provide] PROVIDE (__rel_iplt_end = .) .rela.dyn 0x0000000000008000 0x0 *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) [!provide] PROVIDE (__rela_iplt_start = .) *(.rela.iplt) [!provide] PROVIDE (__rela_iplt_end = .) .rel.plt *(.rel.plt) .rela.plt *(.rela.plt) .init *(SORT_NONE(.init)) .plt *(.plt) .iplt 0x0000000000008000 0x0 *(.iplt) .iplt 0x0000000000008000 0x0 with.s.o .text 0x0000000008000000 0x140 *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) .text 0x0000000008000000 0x140 with.s.o 0x00000000080000a8 _start 0x0000000008000100 TIM1_UP_isr *(.gnu.warning) *(.glue_7t) .glue_7t 0x0000000008000140 0x0 linker stubs *(.glue_7) .glue_7 0x0000000008000140 0x0 linker stubs *(.vfp11_veneer) .vfp11_veneer 0x0000000008000140 0x0 linker stubs *(.v4_bx) .v4_bx 0x0000000008000140 0x0 linker stubs .fini *(SORT_NONE(.fini)) [!provide] PROVIDE (__etext = .) [!provide] PROVIDE (_etext = .) [!provide] PROVIDE (etext = .) .rodata *(.rodata .rodata.* .gnu.linkonce.r.*) .rodata1 *(.rodata1) .ARM.extab *(.ARM.extab* .gnu.linkonce.armextab.*) [!provide] PROVIDE (__exidx_start = .) .ARM.exidx *(.ARM.exidx* .gnu.linkonce.armexidx.*) [!provide] PROVIDE (__exidx_end = .) .eh_frame_hdr *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) .eh_frame *(.eh_frame) *(.eh_frame.*) .gcc_except_table *(.gcc_except_table .gcc_except_table.*) .gnu_extab *(.gnu_extab*) .exception_ranges *(.exception_ranges .exception_ranges*) 0x0000000008010140 . = (ALIGN (CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 0x1))) .eh_frame *(.eh_frame) *(.eh_frame.*) .gnu_extab *(.gnu_extab) .gcc_except_table *(.gcc_except_table .gcc_except_table.*) .exception_ranges *(.exception_ranges .exception_ranges*) .tdata 0x0000000008010140 0x0 [!provide] PROVIDE (__tdata_start = .) *(.tdata .tdata.* .gnu.linkonce.td.*) .tbss *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) .preinit_array 0x0000000008010140 0x0 [!provide] PROVIDE (__preinit_array_start = .) *(.preinit_array) [!provide] PROVIDE (__preinit_array_end = .) .init_array 0x0000000008010140 0x0 [!provide] PROVIDE (__init_array_start = .) *(SORT_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*)) *(.init_array EXCLUDE_FILE(*crtend?.o *crtend.o *crtbegin?.o *crtbegin.o) .ctors) [!provide] PROVIDE (__init_array_end = .) .fini_array 0x0000000008010140 0x0 [!provide] PROVIDE (__fini_array_start = .) *(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*)) *(.fini_array EXCLUDE_FILE(*crtend?.o *crtend.o *crtbegin?.o *crtbegin.o) .dtors) [!provide] PROVIDE (__fini_array_end = .) .ctors *crtbegin.o(.ctors) *crtbegin?.o(.ctors) *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors) *(SORT_BY_NAME(.ctors.*)) *(.ctors) .dtors *crtbegin.o(.dtors) *crtbegin?.o(.dtors) *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors) *(SORT_BY_NAME(.dtors.*)) *(.dtors) .jcr *(.jcr) .data.rel.ro *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) .dynamic *(.dynamic) .got 0x0000000008010140 0x0 *(.got.plt) *(.igot.plt) .igot.plt 0x0000000008010140 0x0 with.s.o *(.got) *(.igot) .data 0x0000000008010140 0x0 0x0000000008010140 __data_start = . *(.data .data.* .gnu.linkonce.d.*) .data 0x0000000008010140 0x0 with.s.o .data1 *(.data1) 0x0000000008010140 _edata = . [!provide] PROVIDE (edata = .) 0x0000000008010140 . = . 0x0000000008010140 __bss_start = . 0x0000000008010140 __bss_start__ = . .bss 0x0000000008010140 0x0 *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) .bss 0x0000000008010140 0x0 with.s.o *(COMMON) 0x0000000008010140 . = ALIGN ((. != 0x0)?0x4:0x1) 0x0000000008010140 _bss_end__ = . 0x0000000008010140 __bss_end__ = . 0x0000000008010140 . = ALIGN (0x4) 0x0000000008010140 . = SEGMENT_START ("ldata-segment", .) 0x0000000008010140 . = ALIGN (0x4) 0x0000000008010140 __end__ = . 0x0000000008010140 _end = . [!provide] PROVIDE (end = .) .stack 0x0000000000080000 0x0 0x0000000000080000 _stack = . *(.stack) .stab *(.stab) .stabstr *(.stabstr) .stab.excl *(.stab.excl) .stab.exclstr *(.stab.exclstr) .stab.index *(.stab.index) .stab.indexstr *(.stab.indexstr) .comment *(.comment) .debug *(.debug) .line *(.line) .debug_srcinfo *(.debug_srcinfo) .debug_sfnames *(.debug_sfnames) .debug_aranges *(.debug_aranges) .debug_pubnames *(.debug_pubnames) .debug_info *(.debug_info .gnu.linkonce.wi.*) .debug_abbrev *(.debug_abbrev) .debug_line *(.debug_line .debug_line.* .debug_line_end) .debug_frame *(.debug_frame) .debug_str *(.debug_str) .debug_loc *(.debug_loc) .debug_macinfo *(.debug_macinfo) .debug_weaknames *(.debug_weaknames) .debug_funcnames *(.debug_funcnames) .debug_typenames *(.debug_typenames) .debug_varnames *(.debug_varnames) .debug_pubtypes *(.debug_pubtypes) .debug_ranges *(.debug_ranges) .debug_macro *(.debug_macro) .debug_addr *(.debug_addr) .ARM.attributes 0x0000000000000000 0x21 *(.ARM.attributes) .ARM.attributes 0x0000000000000000 0x21 with.s.o *(.gnu.attributes) .note.gnu.arm.ident *(.note.gnu.arm.ident) /DISCARD/ *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) OUTPUT(with.s.elf elf32-littlearm)
Кликните здесь для просмотра всего текста
arm-none-eabi-ld: warning: cannot find entry symbol _start; defaulting to 0000000008000000
Memory Configuration Name Origin Length Attributes *default* 0x0000000000000000 0xffffffffffffffff Linker script and memory map LOAD wo.s.o Address of section .text set to 0x8000000 [!provide] PROVIDE (__executable_start = SEGMENT_START ("text-segment", 0x8000)) 0x0000000000008000 . = SEGMENT_START ("text-segment", 0x8000) .interp *(.interp) .note.gnu.build-id *(.note.gnu.build-id) .hash *(.hash) .gnu.hash *(.gnu.hash) .dynsym *(.dynsym) .dynstr *(.dynstr) .gnu.version *(.gnu.version) .gnu.version_d *(.gnu.version_d) .gnu.version_r *(.gnu.version_r) .rel.dyn 0x0000000000008000 0x0 *(.rel.init) *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) *(.rel.fini) *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) *(.rel.ctors) *(.rel.dtors) *(.rel.got) *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) [!provide] PROVIDE (__rel_iplt_start = .) *(.rel.iplt) .rel.iplt 0x0000000000008000 0x0 wo.s.o [!provide] PROVIDE (__rel_iplt_end = .) .rela.dyn 0x0000000000008000 0x0 *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) [!provide] PROVIDE (__rela_iplt_start = .) *(.rela.iplt) [!provide] PROVIDE (__rela_iplt_end = .) .rel.plt *(.rel.plt) .rela.plt *(.rela.plt) .init *(SORT_NONE(.init)) .plt *(.plt) .iplt 0x0000000000008000 0x0 *(.iplt) .iplt 0x0000000000008000 0x0 wo.s.o .text 0x0000000008000000 0x140 *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) .text 0x0000000008000000 0x140 wo.s.o *(.gnu.warning) *(.glue_7t) .glue_7t 0x0000000008000140 0x0 linker stubs *(.glue_7) .glue_7 0x0000000008000140 0x0 linker stubs *(.vfp11_veneer) .vfp11_veneer 0x0000000008000140 0x0 linker stubs *(.v4_bx) .v4_bx 0x0000000008000140 0x0 linker stubs .fini *(SORT_NONE(.fini)) [!provide] PROVIDE (__etext = .) [!provide] PROVIDE (_etext = .) [!provide] PROVIDE (etext = .) .rodata *(.rodata .rodata.* .gnu.linkonce.r.*) .rodata1 *(.rodata1) .ARM.extab *(.ARM.extab* .gnu.linkonce.armextab.*) [!provide] PROVIDE (__exidx_start = .) .ARM.exidx *(.ARM.exidx* .gnu.linkonce.armexidx.*) [!provide] PROVIDE (__exidx_end = .) .eh_frame_hdr *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) .eh_frame *(.eh_frame) *(.eh_frame.*) .gcc_except_table *(.gcc_except_table .gcc_except_table.*) .gnu_extab *(.gnu_extab*) .exception_ranges *(.exception_ranges .exception_ranges*) 0x0000000008010140 . = (ALIGN (CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 0x1))) .eh_frame *(.eh_frame) *(.eh_frame.*) .gnu_extab *(.gnu_extab) .gcc_except_table *(.gcc_except_table .gcc_except_table.*) .exception_ranges *(.exception_ranges .exception_ranges*) .tdata 0x0000000008010140 0x0 [!provide] PROVIDE (__tdata_start = .) *(.tdata .tdata.* .gnu.linkonce.td.*) .tbss *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) .preinit_array 0x0000000008010140 0x0 [!provide] PROVIDE (__preinit_array_start = .) *(.preinit_array) [!provide] PROVIDE (__preinit_array_end = .) .init_array 0x0000000008010140 0x0 [!provide] PROVIDE (__init_array_start = .) *(SORT_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*)) *(.init_array EXCLUDE_FILE(*crtend?.o *crtend.o *crtbegin?.o *crtbegin.o) .ctors) [!provide] PROVIDE (__init_array_end = .) .fini_array 0x0000000008010140 0x0 [!provide] PROVIDE (__fini_array_start = .) *(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*)) *(.fini_array EXCLUDE_FILE(*crtend?.o *crtend.o *crtbegin?.o *crtbegin.o) .dtors) [!provide] PROVIDE (__fini_array_end = .) .ctors *crtbegin.o(.ctors) *crtbegin?.o(.ctors) *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors) *(SORT_BY_NAME(.ctors.*)) *(.ctors) .dtors *crtbegin.o(.dtors) *crtbegin?.o(.dtors) *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors) *(SORT_BY_NAME(.dtors.*)) *(.dtors) .jcr *(.jcr) .data.rel.ro *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) .dynamic *(.dynamic) .got 0x0000000008010140 0x0 *(.got.plt) *(.igot.plt) .igot.plt 0x0000000008010140 0x0 wo.s.o *(.got) *(.igot) .data 0x0000000008010140 0x0 0x0000000008010140 __data_start = . *(.data .data.* .gnu.linkonce.d.*) .data 0x0000000008010140 0x0 wo.s.o .data1 *(.data1) 0x0000000008010140 _edata = . [!provide] PROVIDE (edata = .) 0x0000000008010140 . = . 0x0000000008010140 __bss_start = . 0x0000000008010140 __bss_start__ = . .bss 0x0000000008010140 0x0 *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) .bss 0x0000000008010140 0x0 wo.s.o *(COMMON) 0x0000000008010140 . = ALIGN ((. != 0x0)?0x4:0x1) 0x0000000008010140 _bss_end__ = . 0x0000000008010140 __bss_end__ = . 0x0000000008010140 . = ALIGN (0x4) 0x0000000008010140 . = SEGMENT_START ("ldata-segment", .) 0x0000000008010140 . = ALIGN (0x4) 0x0000000008010140 __end__ = . 0x0000000008010140 _end = . [!provide] PROVIDE (end = .) .stack 0x0000000000080000 0x0 0x0000000000080000 _stack = . *(.stack) .stab *(.stab) .stabstr *(.stabstr) .stab.excl *(.stab.excl) .stab.exclstr *(.stab.exclstr) .stab.index *(.stab.index) .stab.indexstr *(.stab.indexstr) .comment *(.comment) .debug *(.debug) .line *(.line) .debug_srcinfo *(.debug_srcinfo) .debug_sfnames *(.debug_sfnames) .debug_aranges *(.debug_aranges) .debug_pubnames *(.debug_pubnames) .debug_info *(.debug_info .gnu.linkonce.wi.*) .debug_abbrev *(.debug_abbrev) .debug_line *(.debug_line .debug_line.* .debug_line_end) .debug_frame *(.debug_frame) .debug_str *(.debug_str) .debug_loc *(.debug_loc) .debug_macinfo *(.debug_macinfo) .debug_weaknames *(.debug_weaknames) .debug_funcnames *(.debug_funcnames) .debug_typenames *(.debug_typenames) .debug_varnames *(.debug_varnames) .debug_pubtypes *(.debug_pubtypes) .debug_ranges *(.debug_ranges) .debug_macro *(.debug_macro) .debug_addr *(.debug_addr) .ARM.attributes 0x0000000000000000 0x21 *(.ARM.attributes) .ARM.attributes 0x0000000000000000 0x21 wo.s.o *(.gnu.attributes) .note.gnu.arm.ident *(.note.gnu.arm.ident) /DISCARD/ *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) OUTPUT(wo.s.elf elf32-littlearm)
0
|
||||||||||||||||||||||||||||||||||||||||||
| 08.06.2021, 11:01 | |
|
0
|
|
| 08.06.2021, 11:26 | |
|
0
|
|
|
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
|
||||
| 08.06.2021, 18:13 [ТС] | ||||
|
Добавлено через 10 минут politoto, уважаемые обитательи форума мне говорили, что адрес конца стека равен 0x20005000 и поправляли меня когда я указывал иные значения, но тут адрес 0x20002000 и только с этим адресом работает програмка. почему? Добавлено через 14 минут
0
|
||||
|
4146 / 2724 / 433
Регистрация: 09.09.2017
Сообщений: 12,070
|
|||||||||||||||||
| 08.06.2021, 19:28 | |||||||||||||||||
|
Вот дизасм одного из моих проектов:
Где вы в своем проекте ошиблись я не знаю. Если не забуду, посмотрю. Вы с этим кодом игрались Stm32f103 примитивная работа с таймерами на ассемблере ? Добавлено через 52 секунды То, что дизасм пытается дизассемблировать адреса как код внимания не обращайте. Для него ведь что то числа, что это. Добавлено через 30 минут Как и обещал, проверяю: замена вершины стека на 0x2000'5000 работе не мешает. Если убрать .text, работе это тоже не мешает. "Даже" если убрать .global TIM1_UP_isr, тоже ничего не ломается. Код:
1
|
|||||||||||||||||
|
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
|
||
| 08.06.2021, 19:39 [ТС] | ||
|
0
|
||
|
4146 / 2724 / 433
Регистрация: 09.09.2017
Сообщений: 12,070
|
|
| 08.06.2021, 20:33 | |
|
Я же привел код, в котором все "поломано" как вы сказали. И команды для сборки и прошивки. Вы ее вообще проверяли?
0
|
|
|
Модератор
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,875
|
|
| 08.06.2021, 20:40 | |
|
1
|
|
|
4146 / 2724 / 433
Регистрация: 09.09.2017
Сообщений: 12,070
|
|
| 08.06.2021, 21:13 | |
|
В Пилюлях же вроде C8T6 используются. У них 20 кБ.
1
|
|
|
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
|
||||||||
| 08.06.2021, 23:33 [ТС] | ||||||||
|
COKPOWEHEU,
Добавлено через 7 минут
0
|
||||||||
|
4146 / 2724 / 433
Регистрация: 09.09.2017
Сообщений: 12,070
|
||||||
| 09.06.2021, 02:26 | ||||||
|
Каково полное название вашего контроллера, STM32F103C8T6?
0
|
||||||
| 09.06.2021, 02:26 | |
|
Работа с таймерами Работа с двумя таймерами Работа с таймерами и стилями Работа с двумя таймерами Работа с таймерами в Xmega Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|
|
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
|
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701
Купил два термопринтера QR701.
На сэлф-тесте написано:
Language: PC936 (GB18030).
Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
|
Создание формы заимствованного документа
Maks 03.08.2026
Задача:
Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также
табличная часть со следующими реквизитами:
- Расчетный счет покупателя. . .
|
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача:
В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
|