Jump to content

    
Sign in to follow this  
Danis

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

Recommended Posts

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

 

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

 

 

Share this post


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

 

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

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

Share this post


Link to post
Share on other sites

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

 

 

 

 

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

 

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

 

 

 

Share this post


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

 

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

 

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

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

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

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

Share this post


Link to post
Share on other sites

На передатчик заложил 40 мА.

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites
Нормально всё программируется.

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

Спасибо

Share this post


Link to post
Share on other sites

Ребята! Кто-нибудь для Кейла писал инлайн вставки для 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
    }
}

Что делать?

Share this post


Link to post
Share on other sites
...

Хочу такое:

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

Что делать?

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

 

upd:

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

__get_PRIMASK

__set_PRIMASK

 

Share this post


Link to post
Share on other sites

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

 

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

 

__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 ? С оптимизацией они и так инлайнами будут.

Edited by ISK2010

Share this post


Link to post
Share on other sites
Посмотреть на библиотеку "CMSIS".
Спасибо! Полегчало:)

 

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

Share this post


Link to post
Share on other sites

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

Столкнулся с непоняткой при самопрограммировании посредством 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 - нет защиты.

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this