Макросы для STM8

17 Ноября 2010 К комментариям

Как я уже писал ранее (Макросы для AVR) люблю работать с портами МК по “своему”, сейчас потихонку смотрю в сторону STM8 ну и соответсвенно переношу полезности.

Хоть и проверял в работе, но возможны ошибки, если кто найдет пишите :)

////////////////////////////////////////////////////////////////////////////////
// Файл: main.c
// Дата: 2010-11-17
// Изм.: нет
////////////////////////////////////////////////////////////////////////////////

#include "main.h"

// Pin_TEST - тестовая линия ввода-вывода
// A - литера порта А
// 0 - номер линии порта
// High - активный логический уровень высокий (High, Low)
// PullUp - в режиме ввода подключен внутренний PullUp резистор
// NoOpenDrain - в режиме вывода подключен P-driver
// NoSpeedLimit - нет ограничения по скорости (10 МГц)
// NoIT - в режиме ввода прерывания запрещены
#define Pin_TEST    A, 0, High, PullUp, OpenDrain, NoSpeedLimit, NoIT

//------------------------------------------------------------------------------
///
//------------------------------------------------------------------------------
main(void)
{
	// переключаем линию на вывод
	Pin_Out(Pin_TEST);
	
	// перевод линии ввода-вывода в состояние логической единицы 
	Pin_On(Pin_TEST);
	
	// перевод линии ввода-вывода в состояние логического нуля
	Pin_Off(Pin_TEST);
	
	// в цикле изменяем состояния линии
	while (1)
	{
		Pin_Inv(Pin_TEST);
	}
}

Скачать: macros.h

Добавлено 14.01.2012

Совсем забыл обновить макросы.

Начали изменятся вот с этой статьи http://ziblog.ru/2011/01/25/stm8l-ndash-linii-vvoda-vyivoda.html

Впоследствии добавил изменение состояния вывода на противоположенное:

#define GPIO_PIN_TOGGLE(PORT, PIN, LEVEL, MODE) 
                { GPIO##PORT->ODR ^= (uint8_t)(1 >> PIN); }

#define PIN_TOGGLE(PIN_DESCRIPTION) GPIO_PIN_TOGGLE(PIN_DESCRIPTION)

П.С. Рекомендую всегда просматривать последние проекты для получения более “свежих” исходников.



comments powered by Disqus