Категории:

  • Программирование


  • Изобразительное искусство


  • Программирование встраиваемых систем


  • Компьютерная графика


  • WEB Разработка


  • Музыка


  • Инженерия


  • iVARIOUS


  • Mobil App


  • STM32. Адресация регистров

    Прежде чем приступить к написанию программы для микроконтроллера, нужно подключить тактирование нужных блоков, за это отвечает регистр RCC, находим его в документации, и ищем биты , установка которых включает тактирование для нужных портов. Находим регистр RCCAHB1ENR который тактирует порты и некоторые другие блоки. Регистр RCCAHB1ENR как мы видим имеет адрес смещения 0x30. Сам блок тактирования RCC занимает в адресном пространстве некоторый диапазон памяти для своих регистров управления, поэтому мы ищем адрес первого регистра RCC и складываем его с адресом смещения того регистра который нам нужен:

    STM32 RCC

    Данный порядок вычисления адресации нужно хорошо запомнить, так как он будет использоваться часто и для разных блоков: адрес первого регистра нужного блока + число смещения, которое указывает на адрес нужного регистра. Числа с нужными битами можно указывать в любом исчислении, а для перевода можно использовать калькулятор windows.
    В действии высше мы использовали запись и заносили число по указателю на адрес регистра. Для лучшей читаемости можно указатели заменить словами названиями регистров:


    #define RCC_GPIO *((uint32_t*)0x40023830)

    И для присваивания числа, уже можно записывать любое удобное имя: RCC_GPIO=0x3, RCC_PORTS=0b1000; ...

    Внимание! При установлении значений в регистры, нужно смотреть, нет ли каких-нибудь значений по умолчанию в каждом регистре. Если регистр имеет значение сброса, следующая установка значений происходит через оператор "ИЛИ":

    STM32 RCC

    Из документации видно, что порты GPIOA и GPIOB уже имеют значения по умолчанию, поэтому установка значений будет проходить следующим образом:


    GPIOA_MODER|=0x80;
    GPIOB_MODER|=0x80;


    Читайте больше в категории: Программирование встраиваемых систем

    2016-03-10 08:30:40



    Другие статьи:

    Android. Service. Службы

    PHP. Строки. Переменные в строках

    JavaScript. Создание, поиск и удаление элементов

    Java. Графики функций

    STM32. регистры таймеров TIM6 TIM7

    Рисунок. Техники рисования

    Maya. Операция Fill Hole

    STM32. Регистры DMA

    Maya. Карта рельефа Bump

    PHP. $_COOKIE