Перейти к содержанию
    

sla000

Участник
  • Постов

    20
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о sla000

  • Звание
    Участник
    Участник
  • День рождения 06.03.1978

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array
  1. С чем связана такая неприязнь к libgcc? При грамотном подходе оттуда импортируется только одна эта функция. Как вариант - можно подсмотреть реализацию в исходниках libgcc.
  2. Если перед void clear_flag(void){ поставить static, то скорее всего компилятор заинлайнит функцию (зависит от выбранной оптимизации), и второй вариант даст такой же код как и первый.
  3. STM32F4Discovery

    Эти записи не равнозначны. Первая сбрасывает все биты а младший бит устанавливает, вторая только устанавливает младший бит.
  4. Немного уменьшить вроде возможно, для подстраховки можно пользовать uxTaskGetStackHighWaterMark().
  5. Можно прикрутить вызов консольных команд через "Customize Tools Menu...". Только зачем? TortoiseHG гораздо приятнее. Сам Keil можно (нужно) поменять на eclipse, там можно плугин с меркуриалом поставить (если так нравятся встроенные варианты тулсов).
  6. I2C1 случайно не включен? В еррате про это есть...
  7. NVIC stm32

    Попробуйте скачать свежую либу на свой проц. Там есть примеры инициализации таймера. В примере NVIC_EnableIRQ() вообще не вызывается, используется ф-я NVIC_Init(). У меня сделано примерно так: RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); static const TIM_TimeBaseInitTypeDef init = { // .TIM_Prescaler = 0, // .TIM_CounterMode = TIM_CounterMode_Up, // .TIM_Period = 0xFFFF, // .TIM_ClockDivision = TIM_CKD_DIV1, }; TIM_TimeBaseInit(TIM2, (TIM_TimeBaseInitTypeDef*) &init); static const NVIC_InitTypeDef nvic = { .NVIC_IRQChannel = TIM2_IRQn, .NVIC_IRQChannelPreemptionPriority = 0, .NVIC_IRQChannelSubPriority = 1, .NVIC_IRQChannelCmd = ENABLE, }; NVIC_Init((NVIC_InitTypeDef*)&nvic); TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE); TIM_Cmd(TIM2, ENABLE);
  8. http://gcc.gnu.org/onlinedocs/gcc-4.6.3/gc...esignated-Inits Another syntax which has the same meaning, obsolete since GCC 2.5, is `fieldname:', as shown here: struct point p = { y: yvalue, x: xvalue }; Хоть и obsolete, но GCC 4.6 это еще компилит, и TCC тоже.
  9. Еще варианты: struct _key Key = {.alt = {0, 1, 2},}; struct _key Key2 = {alt : {0, 1, 2},}; Второй вариант может не прокатить, вроде это расширение для GCC.
  10. Не хватает условий, какой трафик планируется, нужен ли анлим или хватит помегабайтного, нужен ли постоянный доступ в сеть или только ночью, какая скорость нужна GPRS или 3G? Ответьте сами себе на эти вопросы, может и на форум не придется писать. Не так много у нас операторов, можно за час все тарифы посмотреть на сайтах. Исходя из средних гипотетических требований предлагаю такой вариант: 1) TELE2. 2) Не TELE2.
  11. 7000 руб - это зарплата уборщицы за месяц, 3 часа работы в день
  12. can

    Не совсем понятно что нужно проверить - связь с самим контроллером CAN или связь с другим устройством на шине CAN. Для первого случаю рекомендую записать данные в какой-нибудь read-write регистр контроллера, и потом прочитать обратно, если оно - значит ОК. Для второго - самое верное сделать 2 железки и завязать в сеть, т.е. проверить работу непосредственно на практике. Второй вариант - не знаю насчет MCP, но у Silabs есть режим loopback - можно отправить сообщение самому себе (наружу сигнал не проходит, RX фактически закорочен на TX), все равно что пингануть localhost.
  13. Странно, уж хотя бы main то должен остаться. У меня это ключ отлично работает в avr-gcc и arm-gcc.
  14. Нет, гляньте в мейкфайл, там есть список файлов SRC и SRCARM, так вот, если вы создадите файлик с телом перывания, то его надо добавить в список SRCARM. Так он скомпилится в ARM режиме. Соответсвенно всю остальную требуху - инициализацию таймера и т.п. можно запихнуть в SRC, тогда они скомпилятся в THUMB. Да не переживайте вы так ) зачем вам вообще надо программировать на асме? Ну если уж так интересно читайте документацию на архитектуру ARM7TDMI есть на сайте ATMEL. У FreeRTOS есть совершенно четкие указания как должно выглядеть прерывание. Если им не следовать результат непредсказуем, но 100% что все пойдет не так как должно. Как должно быть обрамлено прерывание можно почитать тут: http://www.freertos.org/portsam7xlwIP.html
×
×
  • Создать...