В этой статье представлена основная информация о микроконтроллере STM8S208RB и о том, как создать для него проект IAR.
STM8S208RB Характеристики и технические данные
STM8S208RB имеет 8-разрядное ядро STM8, работающее с максимальной частотой 16 МГц. Он включает в себя 128 КБ флэш-памяти и 8 КБ ОЗУ, что делает его подходящим для различных встроенных приложений. Чип поддерживает несколько интерфейсов связи, включая SPI, UART и I2C, а также 10-разрядный АЦП, который предлагает 16 каналов для аналоговых входов.
| Attribute | Value |
|---|---|
| Core | 8-bit STM8 core |
| Max Frequency | 16 MHz |
| Flash Memory | 128 KB |
| RAM | 8 KB |
| GPIO Pins | Up to 16 general-purpose I/O pins |
| Timers | 2 x 16-bit timers, 1 x 8-bit timer |
| ADC | 10-bit ADC with 16 channels |
| Communication Interfaces | SPI, I2C, UART |
| Clock Sources | Internal 16 MHz, External crystal |
| Operating Voltage | 2.95V to 5.5V |
| Operating Temperature | -40°C to +125°C |
| Package Type | 32-pin LQFP |
| Power Consumption | Low-power modes supported |
STM8S208RB Распиновка

Блок-схема STM8S208RB

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: обеспечивает приблизительную задержку в миллисекундах с помощью вложенных циклов. Этот метод подходит для простых задач синхронизации, но для большей точности следует использовать аппаратные таймеры.
Настройка проекта и этапы компиляции
Загрузка и настройка STSW-STM8069:
- Убедитесь, что вы загрузили библиотеку стандартных периферийных устройств STM8S (STSW-STM8069) версии 2.3.1 с официального веб-сайта ST.
- Включите в свой проект соответствующие заголовочные файлы из библиотеки, такие как
stm8s.h,stm8s_gpio.hи т. д., в свой проект.
Настройка компилятора IAR:
- Откройте IAR Embedded Workbench и создайте новый проект для STM8S208RB.
- Выберите правильное устройство (STM8S208RB) и убедитесь, что инструментарий настроен для STM8.
- Добавьте необходимые исходные файлы:
main.c,led.c,delay.cи т. д. - Включите стандартную библиотеку периферийных устройств STM8S в свой проект. Убедитесь, что установлены правильные пути к файлам библиотеки.
Скомпилируйте и запишите в флэш-память:
- Скомпилируйте проект в IAR. При необходимости устраните все ошибки компиляции.
- Запишите прошивку на плату разработчика STM8S208RB с помощью соответствующего программатора/отладчика (например, ST-Link).
Тестирование и отладка:
- После записи кода понаблюдайте за светодиодами на PC6 и PC7. Светодиоды должны мигать с интервалом в 1 секунду.
- Используйте отладчик или последовательный выход (если доступен) для проверки поведения выводов GPIO и функциональности функций задержки.
Дополнительные предложения и замечания
Использование таймеров для задержки: программная задержка проста, но неэффективна для более сложных приложений. Для более точных и эффективных задержек рассмотрите возможность использования аппаратных таймеров вместо программных задержек.
Оптимизация энергопотребления: если ваше приложение требует низкого энергопотребления, вам может быть интересно изучить режимы низкого энергопотребления микросхемы STM8S208RB, особенно когда система находится в режиме ожидания (например, во время мигания светодиода).
Отладка: Вы можете установить точки останова в коде, чтобы пройти по программе и отследить значения переменных. Это особенно полезно для проверки времени задержек и состояния выводов GPIO.
Определения выводов GPIO: убедитесь, что
LED_GPIO_PORTиLED_GPIO_PINSсоответствуют фактической распиновке вашей платы разработчика. Например, убедитесь, что PC6 и PC7 являются правильными контактами для ваших светодиодов.




