Код: Выделить всё
Reset_Handler
LDR R0, =SystemInit
BLX R0
LDR R0, =__iar_program_start
BX R0
Код: Выделить всё
Reset_Handler
LDR R0, =SystemInit
BLX R0
LDR R0, =__iar_program_start
BX R0


Код: Выделить всё
В дебаггере пошагать не судьба ?
Код: Выделить всё
__iar_program_start() - библиотечная функция, инициализирует память и вызывает main().Не знаю, как точно в IAR, а в Keil так: RAM = RW Data + ZI Data, Flash = Code + RO Data + RW Dataя просто хожу узнать сколько мой код занимает ПЗУ ОЗУ.
Код:
21 672 bytes of readonly code memory
70 420 bytes of readonly data memory
101 512 bytes of readwrite data memory
А что за RW Data? это типа которая в озу пере копируется?Flash = Code + RO Data + RW Data
Почитайте справку IAR на тему C-spy , trace, SWO и иже с ними ...pokk писал(а): dosikus, А что у вас за шкала времени на первом скрине?

RO Data - константы, размещенные в Flashpokk писал(а):А что за RW Data? это типа которая в озу пере копируется?
Код: Выделить всё
#include "stm32f4xx.h"
int main(void) {
RCC ->AHB1ENR |= RCC_AHB1ENR_GPIODEN ;
GPIOD ->MODER|=
GPIO_MODER_MODER14_0 |
GPIO_MODER_MODER13_0
;
GPIOD->OSPEEDR |=
GPIO_OSPEEDER_OSPEEDR14_1 |
GPIO_OSPEEDER_OSPEEDR13_1
;
while (1)
{
GPIOD->BSRRL = GPIO_BSRR_BS_14;
GPIOD->BSRRL = GPIO_BSRR_BS_13;
}
}
Код: Выделить всё
Build target 'STM32F4'
linking...
Program Size: Code=940 RO-data=424 RW-data=20 ZI-data=1636
FromELF: creating hex file...
".\Lesson1.axf" - 0 Error(s), 0 Warning(s).
Код: Выделить всё
Load "D:\\ARM\\Prodject\\Keil\\Lesson1\\Lesson1.axf"
Erase Done.
Programming Done.
Verify OK.


А посмотреть в схеме дискавери не судьба ?optima писал(а):светодиод должен загоратся не 1 а 0! как у тебя подключен светодиод

Так оно и было - просмотр платы показал, что я забыл кренку емкостями обвешатьFPGAlover писал(а):Напрашивается вывод о дополнительной фильтрующей емкости
Посмотри пока у drakon , а завтра подкину...Mr.Denis писал(а):Решил проблему
Осталось понять с задержкой.
Код: Выделить всё
#include "stm32f4xx.h"
int main(void) {
RCC ->AHB1ENR |= RCC_AHB1ENR_GPIODEN ; // Тактирование PORT D
RCC ->AHB1ENR |= RCC_AHB1ENR_GPIOAEN ; // Тактирование PORT A
GPIOD ->MODER|= GPIO_MODER_MODER14_0 | GPIO_MODER_MODER13_0; // Настройка PORT D, pin 13,14 как выход
GPIOD->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR14_1 | GPIO_OSPEEDER_OSPEEDR13_1; // Настройка скорости 50 MHz PORT D, pin 13,14
GPIOA->PUPDR |= GPIO_PUPDR_PUPDR0_1; // Включение подтяжки к PORT A, Pin 0.
while (1)
{
if((GPIOA->IDR & 0x01) == 0x01) // Проверка на нажатие кнопки подключенной к PORT A, pin 0.
{
GPIOD->BSRRL |= GPIO_BSRR_BS_14 | GPIO_BSRR_BS_13; // Включение LED
}else{
GPIOD->BSRRH |= GPIO_BSRR_BS_14 | GPIO_BSRR_BS_13; // Выключение LED
}
}
}
Ну дык включен пуллап , а проверяшь пин на 1 .Mr.Denis писал(а): можете посмотреть на сколько правильно сделано.