реклама на сайте
подробности

 
 
> Тактовая частота GPIO входа и выхода STM32F100, Одинакова ли?
RomanRom
сообщение Feb 29 2012, 16:40
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 231
Регистрация: 14-02-05
Пользователь №: 2 635



Вопрос возник после чтения Reference Manual на STM32F100xx.
На с.103 при описании режимов входов и выходов GPIO есть две одинаковые фразы

==The data present on the I/O pin is sampled into the Input Data Register every APB2
clock cycle===

Однако на с.101 в Table 16 биты MODE0-1 (2-10-50 МГц)
указаны только для режима выхода GPIO.

Влияет ли тактовая частота 2-10-50 МГц на прием данных по входу?
Если влияет, то почему MODE0-1 в режиме входа устанавливаются 00?


Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ReAl
сообщение Mar 8 2012, 20:32
Сообщение #2


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



В том вопросе — а гляньте дизассемблер да и увидите, что там делается.
И цикл с volatile-переменной вероятнее всего эту переменную на стеке заводит, каждый декремент — прочесть из памяти, уменьшить, записать назад.
И GPIO_SetBits() вызывается как функция, потом проверяет свои аргументы на допустимость, потом только пишет в порт.
А если по-нормальному, то из 72-мегагерцового STM32F103 ногодрыгом в цикле импульсы длительностью около 28 наносекунд (два такта) вполне выдаются, если компилятор адрес порта в регистр занесёт до цикла.
Т.е.
Код
Pin<'B', 12> FOO; // см. pin.h в примерах scmRTOS для CortexM3/GCC

    FOO.Mode(OUTPUT);

    for(;;) {
        FOO.On();
        FOO.Off();
    }
даёт импульсы 28 нс с паузой чуток подлиннее (переход всё же).


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
Allregia
сообщение Mar 9 2012, 09:22
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763



Цитата(ReAl @ Mar 8 2012, 22:32) *
В том вопросе — а гляньте дизассемблер да и увидите, что там делается.
И цикл с volatile-переменной вероятнее всего эту переменную на стеке заводит, каждый декремент — прочесть из памяти, уменьшить, записать назад.


Спасибо Александр, теперь прояснилось.

Цитата
И GPIO_SetBits() вызывается как функция, потом проверяет свои аргументы на допустимость


А вот об этом я хотел спросить поподробнее - о праверках. Я соверешнно не понимаю этих "assert" - оно работает на этапе компиляции или остается коде?
Так это что, по каждому чиху во всех функциях из стандартных STшных библиотек делаются все эти проверки при входе?! Ну на время начальной инициализации еще ладно, но а потом, во время работы?! Я тогда понимаю, почему многие этими библиотеками не пользуются...
Go to the top of the page
 
+Quote Post
ReAl
сообщение Mar 9 2012, 19:31
Сообщение #4


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Цитата(Allregia @ Mar 9 2012, 11:22) *
А вот об этом я хотел спросить поподробнее - о праверках. Я соверешнно не понимаю этих "assert" - оно работает на этапе компиляции или остается коде?
Оно не может работать на этапе компиляции -- при этом ещё неизвестно, с каким аргументом функция вызвана. Была бы функция inline в h-файле, могло бы отработать при компиляции.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 22:00
Рейтинг@Mail.ru


Страница сгенерированна за 0.01403 секунд с 7
ELECTRONIX ©2004-2016