Микроконтроллер STM8S208RB: особенности, технические характеристики, области применения и руководство по проектам IAR

В этой статье представлена основная информация о микроконтроллере STM8S208RB и о том, как создать для него проект IAR.

STM8S208RB Характеристики и технические данные

STM8S208RB имеет 8-разрядное ядро STM8, работающее с максимальной частотой 16 МГц. Он включает в себя 128 КБ флэш-памяти и 8 КБ ОЗУ, что делает его подходящим для различных встроенных приложений. Чип поддерживает несколько интерфейсов связи, включая SPI, UART и I2C, а также 10-разрядный АЦП, который предлагает 16 каналов для аналоговых входов.

AttributeValue
Core8-bit STM8 core
Max Frequency16 MHz
Flash Memory128 KB
RAM8 KB
GPIO PinsUp to 16 general-purpose I/O pins
Timers2 x 16-bit timers, 1 x 8-bit timer
ADC10-bit ADC with 16 channels
Communication InterfacesSPI, I2C, UART
Clock SourcesInternal 16 MHz, External crystal
Operating Voltage2.95V to 5.5V
Operating Temperature-40°C to +125°C
Package Type32-pin LQFP
Power ConsumptionLow-power modes supported

STM8S208RB Распиновка

STM8S208RB LQFP 48 pin pinout e1731663299278
STM8S208RB LQFP 48-pin pinout

Блок-схема STM8S208RB

STM8S208RB Block Diagram
STM8S208RB Block Diagram

STM8S208RB Применение

  • Потребительская электроника: STM8S208RB используется в таких продуктах, как бытовая техника и игрушки, где требуется низкое энергопотребление и простое управление.
  • Автомобильные приложения: он применяется в автомобильных системах для таких задач, как управление освещением и подключение датчиков.
  • Промышленное управление: микроконтроллер используется для управления машинами и процессами автоматизации.
  • Умный дом: он используется в таких устройствах, как термостаты и интеллектуальные системы освещения.
  • Портативные устройства: благодаря низкому энергопотреблению он идеально подходит для устройств, работающих от батарей.
  • IoT: он может быть найден в устройствах IoT, особенно в тех, которые требуют эффективной обработки и подключения.
  • Безопасность: STM8S208RB часто используется в сигнализациях, камерах безопасности и связанных системах.
  • Здравоохранение: он также находит применение в системах медицинского мониторинга.

Проект IAR: пример мигания светодиода GPIO на STM8S208RB

Выполнив описанные ниже действия, вы сможете успешно реализовать пример мигания светодиода GPIO на STM8S208RB с использованием стандартной библиотеки периферийных устройств ST и компилятора IAR. Этот пример может служить отправной точкой для более сложных приложений, связанных с управлением GPIO и инициализацией периферийных устройств.

Необходимые инструменты и ресурсы:

  • Стандартная библиотека периферийных устройств ST STM8S/A
  • Компилятор IAR для STM8
  • Плата разработчика STM8S208RBT6

Конфигурация выводов светодиодов

В этом примере встроенные светодиоды подключены к выводам PC6 и PC7 микроконтроллера STM8S208RB.

				
					#define LED_GPIO_PORT  ((GPIO_TypeDef *)GPIOC)
#define LED_GPIO_PINS  (GPIO_PIN_7 | GPIO_PIN_6 | GPIO_PIN_3)

#define  LED1_ON()    GPIO_WriteLow(GPIOC , GPIO_PIN_7)  // Turn LED1 ON
#define  LED1_OFF()   GPIO_WriteHigh(GPIOC , GPIO_PIN_7) // Turn LED1 OFF
#define  LED1_TOGGLE() GPIO_WriteReverse(GPIOC , GPIO_PIN_7) // Toggle LED1

#define  LED2_ON()    GPIO_WriteLow(GPIOC , GPIO_PIN_6)  // Turn LED2 ON
#define  LED2_OFF()   GPIO_WriteHigh(GPIOC , GPIO_PIN_6) // Turn LED2 OFF
#define  LED2_TOGGLE() GPIO_WriteReverse(GPIOC , GPIO_PIN_6) // Toggle LED2

				
			

В этом коде:

  • LED1 управляется с помощью PC7, а LED2 — с помощью PC6.
  • Функции LED1_ON(), LED1_OFF()и LED1_TOGGLE() управляют состоянием LED1, а LED2_ON(), LED2_OFF()и LED2_TOGGLE() управляют светодиодом 2.

Основной код программы

Ниже приведена основная программа для инициализации светодиодов, их переключения и введения задержки между каждым переключением.

				
					#include "stm8s.h"
#include "led.h"
#include "delay.h"

/* Private function prototypes -----------------------------------------------*/
void LED_Init(void);  // Function to initialize the LED GPIO pins

/* Private functions ---------------------------------------------------------*/

// Function to initialize GPIO pins for the LEDs
void LED_Init(void)
{
    GPIO_Init(LED_GPIO_PORT, LED_GPIO_PINS, GPIO_MODE_OUT_PP_LOW_FAST); // Configure the GPIO pins as push-pull output, low speed
}

// Software delay function
void Delay(uint16_t nCount)
{
    while (nCount != 0)
    {   
        nCount--;
    }
}

void main(void)
{
    // Configure the internal clock to 16 MHz
    CLK_SYSCLKConfig(CLK_PRESCALER_HSIDIV1);  // No prescaler; system clock = 16 MHz

    LED_Init();  // Initialize the GPIO pins for LEDs

    while (1)
    {
        // Toggle LEDs on PC6 and PC7 every 1 second
        GPIO_WriteReverse(LED_GPIO_PORT, (GPIO_Pin_TypeDef)LED_GPIO_PINS);
        delay_ms(1000);  // Delay for 1000 ms (1 second)
    }
}

#ifdef USE_FULL_ASSERT

// Function to report assert failures
void assert_failed(u8* file, u32 line)
{
    // Optionally, report the file and line number
    while (1)
    {
    }
}
#endif

				
			

Функция задержки

Ниже приведен исходный файл функции задержки (delay.c), который предоставляет функции задержки как в микросекундах, так и в миллисекундах.

				
					#include "delay.h"

// Function to create a delay of microseconds
void delay_us(unsigned int nCount)   // Delay in microseconds for 16 MHz clock speed
{
    nCount *= 3;  // Adjust for the system clock speed (16 MHz)
    while (--nCount);  // Decrement nCount until it reaches zero
}

// Function to create a delay of milliseconds
void delay_ms(unsigned int ms)
{
    unsigned int x, y;
    for (x = ms; x > 0; x--)  // Loop for each millisecond
        for (y = 3147; y > 0; y--);  // Inner loop for delay approximation
    __asm( "nop" );  // No operation (to adjust the delay)
    __asm( "nop" );  // No operation (to adjust the delay)
}

				
			

Объяснение функций задержки:

  • delay_us: обеспечивает задержку в микросекундах. Продолжительность задержки регулируется путем умножения введенного значения на 3, чтобы соответствовать тактовой частоте системы 16 МГц.
  • delay_ms: обеспечивает приблизительную задержку в миллисекундах с помощью вложенных циклов. Этот метод подходит для простых задач синхронизации, но для большей точности следует использовать аппаратные таймеры.

Настройка проекта и этапы компиляции

  1. Загрузка и настройка STSW-STM8069:

    • Убедитесь, что вы загрузили библиотеку стандартных периферийных устройств STM8S (STSW-STM8069) версии 2.3.1 с официального веб-сайта ST.
    • Включите в свой проект соответствующие заголовочные файлы из библиотеки, такие как stm8s.h, stm8s_gpio.hи т. д., в свой проект.
  2. Настройка компилятора IAR:

    • Откройте IAR Embedded Workbench и создайте новый проект для STM8S208RB.
    • Выберите правильное устройство (STM8S208RB) и убедитесь, что инструментарий настроен для STM8.
    • Добавьте необходимые исходные файлы: main.c, led.c, delay.cи т. д.
    • Включите стандартную библиотеку периферийных устройств STM8S в свой проект. Убедитесь, что установлены правильные пути к файлам библиотеки.
  3. Скомпилируйте и запишите в флэш-память:

    • Скомпилируйте проект в IAR. При необходимости устраните все ошибки компиляции.
    • Запишите прошивку на плату разработчика STM8S208RB с помощью соответствующего программатора/отладчика (например, ST-Link).
  4. Тестирование и отладка:

    • После записи кода понаблюдайте за светодиодами на PC6 и PC7. Светодиоды должны мигать с интервалом в 1 секунду.
    • Используйте отладчик или последовательный выход (если доступен) для проверки поведения выводов GPIO и функциональности функций задержки.

Дополнительные предложения и замечания

  1. Использование таймеров для задержки: программная задержка проста, но неэффективна для более сложных приложений. Для более точных и эффективных задержек рассмотрите возможность использования аппаратных таймеров вместо программных задержек.

  2. Оптимизация энергопотребления: если ваше приложение требует низкого энергопотребления, вам может быть интересно изучить режимы низкого энергопотребления микросхемы STM8S208RB, особенно когда система находится в режиме ожидания (например, во время мигания светодиода).

  3. Отладка: Вы можете установить точки останова в коде, чтобы пройти по программе и отследить значения переменных. Это особенно полезно для проверки времени задержек и состояния выводов GPIO.

  4. Определения выводов GPIO: убедитесь, что LED_GPIO_PORT и LED_GPIO_PINS соответствуют фактической распиновке вашей платы разработчика. Например, убедитесь, что PC6 и PC7 являются правильными контактами для ваших светодиодов.

Поделиться:

Прокрутить вверх

Instant Quote