Заметки электроника
Простое - надёжнее!
Меню
  • Главная
  • Погода
  • Заметки
  • Календарь
  • Фотогалерея
  • Песни
  • Чтиво
  • Программы
  • Скачать
  • Связь и ссылки
  • Чехия
  • Lavka

Живёшь в Чехии?

Bit band cortex m3 stm32

  • Печать
  • E-mail
Информация о материале
Автор: Super User
Родительская категория: Заметки
Категория: Программирование микроконтроллеров
Создано: 27 мая 2013
Обновлено: 25 апреля 2025
Просмотров: 9351

Рейтинг: 5 / 5

Звезда активнаЗвезда активнаЗвезда активнаЗвезда активнаЗвезда активна

Технология bit-band в Cortex-M3 — это выделение некоторой области памяти, которая служит для побитового доступа к регистрам. Эта технология позволяет напрямую управлять состоянием портов ввода-вывода, что облегчает имплементацию последовательных интерфейсов.

В плате STM32 Value line discovery(процессор SM32F100RBT6B)имеется два светодиода: зелёного и синего цветов.
На PC9 – зелёный и на PC8 - синий.

Обычным путём установка бита на PC9 происходит следующим образом:

GPIOC->ODR|=GPIO_ODR_ODR9; //set

Снятие:
GPIOC->ODR&=~GPIO_ODR_ODR9; //reset

Или

GPIOC->BSRR=GPIO_BSRR_BS9; // set
GPIOC->BSRR=GPIO_BSRR_BR9; // reset

Аналогично для  PC8.

Приступим. Пишу относительно IAR, статья же актуальна для любого компилятора. Будем управлять регистром ODR PC9 и PC8.

Подробнее: Bit band cortex m3 stm32

Магия исключающего ИЛИ

  • Печать
  • E-mail
Информация о материале
Родительская категория: Заметки
Категория: Программирование
Создано: 28 июля 2013
Обновлено: 25 апреля 2025
Просмотров: 12475

Рейтинг: 3 / 5

Звезда активнаЗвезда активнаЗвезда активнаЗвезда не активнаЗвезда не активна
Вступление

В математике обычное ИЛИ (включающее, OR) встречается гораздо чаще исключающего (также называемого XOR).

Например, когда Вы пишете выражение pVq, которое читается ”p ИЛИ q”, это так называемое включающее ИЛИ. В этом случае это выражение ИСТИНА (true), если p = ИСТИНА или q = ИСТИНА, или и p = ИСТИНА и q = ИСТИНА.

Включающее ИЛИ используется в обычном понимании операции ИЛИ (OR), оно используется чаще в логике, нежели исключающее ИЛИ (XOR).

Подробнее: Магия исключающего ИЛИ

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

  • Печать
  • E-mail
Информация о материале
Автор: Super User
Родительская категория: Заметки
Категория: Программирование
Создано: 01 августа 2016
Обновлено: 25 апреля 2025
Просмотров: 2717
Звезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активна
uint8_t * Itoa_R(uint8_t * StrDst, uint8_t SizeOfStr, int16_t Number){ // right aligment version of Itoa
    uint8_t * pStrDst = &StrDst[SizeOfStr - 2];
    int16_t Tmp;
    uint8_t i; // just the index
    uint8_t Sign = 0;
    
    if(Number < 0 )Sign =1;
    Number = (Number < 0) ? -Number : Number;
   
    if(!Number){
      i = 2; 
      *pStrDst-- = '0';} 
    else
     for(i = 1; i < SizeOfStr && Number;   i++){ 
      Tmp = Number%10;
      *pStrDst-- = Tmp + 0x30;
      Number /= 10;
       }
  if (Sign){  
    *pStrDst-- ='-'; 
    i++;
  }
  while(i < SizeOfStr){
    *pStrDst-- = ' ';
    i++;
  }
return StrDst;
}

C: копирование строки с правым выравниванием

  • Печать
  • E-mail
Информация о материале
Автор: Super User
Родительская категория: Заметки
Категория: Программирование
Создано: 19 сентября 2016
Обновлено: 25 апреля 2025
Просмотров: 2607
Звезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активна

Выравнивание с правой стороны, с учётом терминатора '\0' и стандартное копирование.

void FastStrCpy(const uint8_t * Src, uint8_t * Dst, uint8_t SizeOfDst, Text_AlignModeTypdef Direction){ // Direction is 0 = default(LEFT one), 1 = // MAXSTRINGLENGTH is compare with max index
uint8_t i = 0;
uint8_t length = 0;
switch (Direction){
case LEFT_MODE: // for(i = 0; i < SizeOfDst; i++){

   if(*Src != '\0' ) *Dst++ = *Src++;
   else {*Dst='\0'; break;}

} break;
 case RIGHT_MODE:
  while(Src[i++])length++;
  for(i = 1; i < length+1 ; i++) // the lastest symbol is '\0'
   Dst[SizeOfDst-i-1] = Src[length-i]; //:) break;
 }
}

 program 19092016

 

 

 

C++:: operators overload

  • Печать
  • E-mail
Информация о материале
Автор: Super User
Родительская категория: Заметки
Категория: Программирование
Создано: 17 декабря 2016
Обновлено: 25 апреля 2025
Просмотров: 1573
Звезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активна

One of the examples (закидать сразу помидорами?):

code operator + overloading

Обратите внимание, передача через параметр, т.е. создаётся ещё один экземпляр класса, существующий в рамках только оператора присваивания

Теперь пример через ссылку (рассмотрены операторы + и +=, передача по ссылке):

class Watch{
 public:
 int x,y;
 Watch operator+ (const Watch& w)const;
 Watch& operator+= (const Watch& w);
 Watch();
 Watch(int x, int y);
 };
Watch::Watch(){ // конструктор по умолчанию
 this->x = 0;
 this->y = 0;
}
inline Watch::Watch(int x, int y){ // альтернативный конструктор
 this->x = x;
 this->y = y;
}
Watch& Watch::operator+=(const Watch& w){ // Переопределение оператора +=
 x += w.x;
 y += w.y;
 return * this;
}

Watch Watch::operator+(const Watch& w)const{
return Watch(x + w.x, y + w.y);
}
  1. Генератор случайных чисел на XOR
  2. Алгоритмы быстрой сортировки
  3. Визуальный HTML редактор онлайн
  4. MATLAB: Анализ пиков

Страница 3 из 191

  • 1
  • 2
  • 3
  • 4
  • ...
  • 6
  • 7
  • 8
  • 9
  • 10

Back to Top

© 2025 Заметки электроника

Top.Mail.Ru