Макросы для 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