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

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

посмотрел, я также делаю всё, вставил ваш код, не работает, что еще на таймер 1 влиять может?

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


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

Как правильно запустить ШИМ на базе TIM1 в STM32f, а то перепробывал кучу разных вариантов даже готовые какието кем то деланные, но всёравно не работает.

 

Ну, как-нибудь локализуйте проблему. Что там в этим ШИМ особенного то? У вас именно с Т1 не получатся или вообще с любым другим таймером? Попробуйте задействовать другие таймеры, каналы. Запускал ШИМ на разных таймерах, все работало как задумано. Наверное, где то ляп у Вас в программе.

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


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

Последнюю строчку из моего примера точно не просмотрели?

    TIM1->BDTR |= TIM_BDTR_MOE; // Специальная фишка у T1 и T8 - Main Output Enable

 

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


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

Ребят, привет!

 

Имеется STM32F217ZG + 512Kb SRAM.

Среда разработки Keil uVision 4.

 

Два вопроса, помогите, пожалуйста:

1. В прошивке очень много статических данных, которые вынесены в SRAM. При старте прошивки в main SRAM поднимается функцией из примера с st.com. Далее функция инициализации переменных все данные инициализирует в SRAM. Очень неудобно дописывать каждый раз при добавлении переменной функцию. Можно как-то сделать, чтобы SRAM монополизировался до старта имеджа прошивки?

2. Можно как-то в Keil прикрутить auto complete кода или к Eclipse CDT прикрутить компилятор Keil?

 

За ссылки буду очень-очень благодарна =)

 

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


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

При старте прошивки в main SRAM поднимается функцией из примера с st.com. Далее функция инициализации переменных все данные инициализирует в SRAM.

Криво. Это от незнания так сделано.

 

Можно как-то сделать, чтобы SRAM монополизировался до старта имеджа прошивки?

Очевидно, имеется в виду до старта main(), и не монополизировался, а инициализировался :-) Не только можно, но и нужно. Следует подправить startup файл. У меня он называется STM32F10x.s, к примеру. В нём перед переходом в __main следует "поднять SRAM".

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


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

посмотрел, я также делаю всё, вставил ваш код, не работает, что еще на таймер 1 влиять может?

 

Если вы пользуйтесь кейловским визардом- там есть ошибка- - он не выставляет бит MOE в BTDR , выставляйте руками после этого индусского визарда.

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


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

Если вы пользуйтесь кейловским визардом- там есть ошибка- - он не выставляет бит MOE в BTDR , выставляйте руками после этого индусского визарда.

я iar пользуюсь и библиотеками к нему, но когда быстродействие нужно то с регистрами работаю. Пробывал и на прямую в регистры писать, без толку.

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


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

?Что будет если:

1) Включить для ноги альтернативные функции

2) Включить на эту ногу все возможные альтернативные функции (USART, EINT,ADC,PWM и т.д.)

В чем идея - на одну ножку приходится больше двух альтернативных функций (по крайней мере в STM32F100). Если бы их было хотя бы 2, причем одна на вход, другая на выход - то понятно, заработала бы та, в соответствии с которой настроена нога. В настройках ноги включается только то что это альтернативная функция, а какая - нигде не указывается.

 

пример: PA2

USART2_TX/ ADC1_IN2/

TIM2_CH3 / TIM15_CH1

 

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

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


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

В настройках ноги включается только то что это альтернативная функция, а какая - нигде не указывается.

Внимательнее читайте даташит:

If several peripherals share the same I/O pin, to avoid conflict between these alternate functions only one peripheral should be enabled at a time through the peripheral clock enable bit (in the corresponding RCC peripheral clock enable register).

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


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

Включите и увидите :)

Вообще размещению альтернативных функций посвящен солидный раздел ерраты F1. Вот в F2 переключение функций наконец-то сделано по-человечески, на каждую ножку есть регистр выбирающий какую именно функцию выводить.

 

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


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

If several peripherals share the same I/O pin, to avoid conflict between these alternate functions only one peripheral should be enabled at a time through the peripheral clock enable bit (in the corresponding RCC peripheral clock enable register).

То-есть по-хорошему если я буду пользовать TIM2, то USART2 мне даже тактировать нельзя?

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


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

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

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


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

То-есть по-хорошему если я буду пользовать TIM2, то USART2 мне даже тактировать нельзя?

Если есть конфликт на ножке, то нельзя. Но в ряде случаев конфликт убирается при помощи remap.

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


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

Хочу попробовать работать с USB, используя HSI в качестве опоры PLL. Разумеется, будет предусмотрена подстройка частоты HSI от часового кварца. Вопрос простой, кто-нить уже так делал? Насколько стабильно работает?

НА данный момент камень STM32F103, но не думаю, что это принципиально.

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


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

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