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

STM32 – вопросы – проблемы - решения.

и в соседнюю веточку не плохо было бы заглянуть http://electronix.ru/forum/index.php?showtopic=69348

много чего интересного там есть

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Подскажите в чем отлаживать проект с STM32W108CB ? Хотел беспроводные датчики сделать. Сижу в keil, а там STM32W108CB не поддерживается. В IAR есть?

 

И еще не нашел на сайте stm библиотеки периферии для него...

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

в списке поддерживаемых в iar (v5.50) есть STM32W108. без букв...

 

тут http://www.st.com/internet/mcu/product/245381.jsp на вкладке design support много полезного есть...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Подскажите в чем отлаживать проект с STM32W108CB ? Хотел беспроводные датчики сделать. Сижу в keil, а там STM32W108CB не поддерживается. В IAR есть?

 

И еще не нашел на сайте stm библиотеки периферии для него...

Для него нет никаких библиотек, есть стеки, которые предоставляют вам API и все по сути. Надеюсь со стеком вы уже определились, а так придется все ручками для периферии писать, но ничего на мой взгляд критичного нет... И будьте внимательны при выборе партнамбера, там посл цифра сообщает для какого стека предназначен контроллер, для начала можно попробовать "универсальный" вариант для любого стека, но вроде бы это образцы не для коммерческого использования, уточняйте у дистрибьютора или у самого производителя этот момент.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Все ручками писать( Как не хочется... Хотел взять этот контроллер только из-за мысли, что все будет быстро по причине идентичности с STM32F. А по сути проще к STM32F100 подкрутить модуль внешний.

 

 

 

 

И будьте внимательны при выборе партнамбера, там посл цифра сообщает для какого стека предназначен контроллер, для начала можно попробовать "универсальный" вариант для любого стека, но вроде бы это образцы не для коммерческого использования, уточняйте у дистрибьютора или у самого производителя этот момент.

 

Спасибо за совет, посмотрю нужный.

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Все ручками писать( Как не хочется... Хотел взять этот контроллер только из-за мысли, что все будет быстро по причине идентичности с STM32F. А по сути проще к STM32F100 подкрутить модуль внешний.

 

Спасибо за совет, посмотрю нужный.

 

Вас потребление устроит?

Вот при работе с периферией у вас должно возникнуть проблем по минимуму, написать функционал для SPI/UART/таймеров... задача не сложная, да и на крайний случай можно это выдернуть из библиотеки периферии от ST, думаю реализация однотипной периферии с STM32F должна остаться той же.

Вот изучение радиочасти + стеков....

Вы также можете посмотреть решения от майкрочипа или TI, поиск вам в помощь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А кто-нибудь STM32F101 и STM32F100 программировал через USART1 и bootloader?

По даташитам вроде бы все сходится, но есть ли у кого-нибудь практика в этом?

Нет ли каких-нибудь подводных камней? И вообще, какой программкой программировать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нормально всё программируется.

Программу раньше легче было найти, теперь у них на сайте чёрт ногу сломит. Здесь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нормально всё программируется.

Программу раньше легче было найти, теперь у них на сайте чёрт ногу сломит. Здесь.

Спасибо

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ребята! Кто-нибудь для Кейла писал инлайн вставки для cortex-m3?

А то справедливо получаю ошибку:

#Inline assembler not permitted when generating Thumb code

Тумба2 не поддерживается инлайн асмом судя по доке:(

Хочу такое:

static inline uint32_t get_interrupt_state(void)
{
    uint32_t sr;

    __asm
    {
        MRS sr, PRIMASK
    }

    return sr;
}

static inline void set_interrupt_state(uint32_t status)
{
    __asm
    {
        MSR PRIMASK, status
    }
}

Что делать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...

Хочу такое:

static inline uint32_t get_interrupt_state(void);
static inline void set_interrupt_state(uint32_t status);

Что делать?

Посмотреть на библиотеку "CMSIS".

 

upd:

смотреть на функции:

__get_PRIMASK

__set_PRIMASK

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня также было.

 

Попробуй вот так:

 

__ASM __inline u32 get_interrupt_state(void)

{

 mrs r0, primask

 bx lr

}



__ASM __inline void set_interrupt_state(u32 status)

{

 msr primask, r0

 bx lr

}

 

А чем тебе не нравятся такие же функции из core_cm3.c ? С оптимизацией они и так инлайнами будут.

Изменено пользователем ISK2010

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Посмотреть на библиотеку "CMSIS".
Спасибо! Полегчало:)

 

А чем тебе не нравятся такие же функции из core_cm3.c ?
Да мне-то нравятся. Только вот в проекте используется пока ещё STM32_Init от кейла с визардом (досталось в наследство) и они конфликтуют. Как только закончу проект от визадра не останется и следа...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Появился новый вопрос.

Столкнулся с непоняткой при самопрограммировании посредством FPEC (unlock FPEC проходит нормально, виснет проц при попытке стереть страничку).

В документации сказано что для стирания/записи FLASH нужно чтобы был включен HSI.

Нужно-ли чтобы ещё и на вход PLL поступала частота от HSI или можно оставить HSE (или я вообще что-то недопонял).

int flash_page_erase(uint32_t page)
{
    while (FPEC->SR & FPEC_SR_BSY) {;}

    FPEC->SR  = FPEC_SR_WRPRTERR | FPEC_SR_PGERR | FPEC_SR_EOP; // clr by writing 1

    FPEC->CR  = FPEC_CR_PER;  // page erase operation w/o interrupts
    FPEC->AR  = page;         // page address
    FPEC->CR |= FPEC_CR_STRT; // start operation    

    while (FPEC->SR & FPEC_SR_BSY) {;}

    return ((FPEC->SR & FPEC_SR_EOP)  != 0); // EOP is asserted at the end of each successful program or erase operation
}

Посмотрите пожалуйста может, в коде где косяк. Спасибо!

 

И ещё интересно как соблюдается следующее требование (благодаря кешу инструкций? ибо программа-то выполняет цикл ожидания из ПЗУ, может её в ОЗУ разместить стоит)?

During a write operation to the Flash memory, any attempt to read the Flash memory will

stall the bus. The read operation will proceed correctly once the write operation has

completed. This means that code or data fetches cannot be made while a write/erase

operation is ongoing.

 

Не дайте умереть!!!:) Сегодня уже целый день бьюсь безуспешно.

Пробовал тактироваться и от HSI и от HSE и от HSE со включенным HSI - ноль. Виснет и всё. Да так что SWD отваливается.

 

FLASH_WRPR = 0xFFFFFFFF - нет защиты.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость
Эта тема закрыта для публикации ответов.
×
×
  • Создать...