реклама на сайте
подробности

 
 
> Как заставить все пины портов STM8L152C6 работать
Wyatchek
сообщение Nov 6 2013, 23:12
Сообщение #1





Группа: Новичок
Сообщений: 4
Регистрация: 31-01-13
Пользователь №: 75 435



Мигать светодиодами я научился, но наткнулся на то, что не все пины порта С отреагировали на мои команды. Как определить какие пины портов (хочу иметь на вывод при токе 5мА максимально возможное число ног) можно использовать на вывод? Либо какие настройки для этого требуются? Вот текст моей программы:

#include "iostm8l152c6.h"
//Задержка 1
void SomeDelay1()
{
for (unsigned long delay_count=0; delay_count<3000; delay_count++);
};
//Задержка 2
void SomeDelay2()
{
for (unsigned long delay_count=0; delay_count<60000; delay_count++);
};
int main( void )
{
PC_DDR_bit.DDR0 = 1; //Настраиваем 0й пин порта C на выход
PC_CR1_bit.C10 = 1; //Переключаем его в режим push-pull
PC_DDR_bit.DDR1 = 1; //Настраиваем 1й пин порта C на выход
PC_CR1_bit.C11 = 1;
PC_DDR_bit.DDR2 = 1; //Настраиваем 2й пин порта C на выход
PC_CR1_bit.C12 = 1;
PC_DDR_bit.DDR3 = 1; //Настраиваем 3й пин порта C на выход
PC_CR1_bit.C13 = 1;
PC_DDR_bit.DDR4 = 1; //Настраиваем 4й пин порта C на выход
PC_CR1_bit.C14 = 1;
PC_DDR_bit.DDR5 = 1; //Настраиваем 5й пин порта C на выход
PC_CR1_bit.C15 = 1;
PC_DDR_bit.DDR6 = 1; //Настраиваем 6й пин порта C на выход
PC_CR1_bit.C16 = 1;
PC_DDR_bit.DDR7 = 1; //Настраиваем 7й пин порта C на выход
PC_CR1_bit.C17 = 1;

while (1) //В цикле будем переключать светодиоды
{
PC_ODR_bit.ODR0 = 1; //Переключаем пин 0 в высокий уровень - светодиод горит
SomeDelay1(); //Задержка в 1
PC_ODR_bit.ODR0 = 0; //Пин 0 в низкий уровень - светодиод тухнет
PC_ODR_bit.ODR1 = 1; //Переключаем пин 1 в высокий уровень - светодиод горит
SomeDelay1(); //Задержка в 1
PC_ODR_bit.ODR1 = 0; //Пин 1 в низкий уровень - светодиод тухнет
PC_ODR_bit.ODR2 = 1; //Переключаем пин 2 в высокий уровень - светодиод горит
SomeDelay1(); //Задержка в 1
PC_ODR_bit.ODR2 = 0; //Пин 2 в низкий уровень - светодиод тухнет
PC_ODR_bit.ODR3 = 1; //Переключаем пин 3 в высокий уровень - светодиод горит
SomeDelay1(); //Задержка в 1
PC_ODR_bit.ODR3 = 0; //Пин 3 в низкий уровень - светодиод тухнет
PC_ODR_bit.ODR4 = 1; //Переключаем пин 4 в высокий уровень - светодиод горит
SomeDelay1(); //Задержка в 1
PC_ODR_bit.ODR4 = 0; //Пин 4 в низкий уровень - светодиод тухнет
PC_ODR_bit.ODR5 = 1; //Переключаем пин 5 в высокий уровень - светодиод горит
SomeDelay1(); //Задержка в 1
PC_ODR_bit.ODR5 = 0; //Пин 5 в низкий уровень - светодиод тухнет
PC_ODR_bit.ODR6 = 1; //Переключаем пин 6 в высокий уровень - светодиод горит
SomeDelay1(); //Задержка в 1
PC_ODR_bit.ODR6 = 0; //Пин 6 в низкий уровень - светодиод тухнет
PC_ODR_bit.ODR7 = 1; //Переключаем пин 7 в высокий уровень - светодиод горит
SomeDelay1(); //Задержка в 1
PC_ODR_bit.ODR7 = 0; //Пин 7 в низкий уровень - светодиод тухнет
SomeDelay2();
};

return 0;
}

Экспериментально я установил, что с помощью этой программки я смогу управлять только С4, С5, С6, С7, В1, В2, В3, В4, В5, В6, В7, D1, D2, D3, D4, D5, D6, D7, E1, E2, E3, E4, E5, E6, E7, A2, A3, A4, A5, A6, A7. Итого мне доступны 31 линия порта на вывод. Это предел?
Хочу управлять всеми сорока пинами этих пяти портов. Что нужно изменить в настройках?
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 22:42
Рейтинг@Mail.ru


Страница сгенерированна за 0.01354 секунд с 7
ELECTRONIX ©2004-2016