18.01.2013, 16:37
|
|
Прописка
Регистрация: 06.03.2007
Сообщений: 144
Сказал спасибо: 22
Сказали Спасибо 10 раз(а) в 10 сообщении(ях)
|
Не срабатывают линии входа STM32
Добрый день.
Подскажите, почему светодиод на stm32VLDiscovery не реагирует на изменение входа?:
Coocox:
Код:
|
int main(void){
GPIO_InitTypeDef PORTA;
PORTA.GPIO_Mode=GPIO_Mode_IN_FLOATING;
PORTA.GPIO_Speed=GPIO_Speed_50MHz;
PORTA.GPIO_Pin|=GPIO_Pin_2;
GPIO_Init(GPIOA,&PORTA);
....
while(1){
if((GPIOB-›IDR & GPIO_Pin_2)==0x01 ){
GPIO_WriteBit(GPIOC,GPIO_Pin_9,Bit_SET);
}
else{
GPIO_WriteBit(GPIOC,GPIO_Pin_9,Bit_RESET);
}
} |
модуль GPIOA подключен и прописан в Main.c
светодиоды включаются от таймера.
Подскажите, что не так в коде?
Последний раз редактировалось sanstan; 18.01.2013 в 16:42.
|
|
|
|
18.01.2013, 16:39
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 918
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Не срабатывают линии входа STM32
Тактирование забыл включить. Да и запись стремная. GPIO_Pin_2 = (1‹‹2), а проверка идет с 0х01 т.е. (1‹‹0)
Последний раз редактировалось Easyrider83; 18.01.2013 в 16:52.
|
|
|
Сказали "Спасибо" Easyrider83
|
|
|
18.01.2013, 16:45
|
|
Прописка
Регистрация: 06.03.2007
Сообщений: 144
Сказал спасибо: 22
Сказали Спасибо 10 раз(а) в 10 сообщении(ях)
|
Re: Не срабатывают линии входа STM32
GPIO_Pin_2 = 0x0004
тактирование по умолчанию настраивается само
условие равно либо 0 либо 1
Последний раз редактировалось sanstan; 18.01.2013 в 16:47.
|
|
|
|
18.01.2013, 16:50
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 918
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Не срабатывают линии входа STM32
|
|
|
|
18.01.2013, 16:56
|
|
Прописка
Регистрация: 06.03.2007
Сообщений: 144
Сказал спасибо: 22
Сказали Спасибо 10 раз(а) в 10 сообщении(ях)
|
Re: Не срабатывают линии входа STM32
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE); //
if((GPIOB-›IDR & GPIO_Pin_2)==либо 0 либо 1){
GPIO_WriteBit(GPIOC,GPIO_Pin_9,Bit_SET);
}
else{
GPIO_WriteBit(GPIOC,GPIO_Pin_9,Bit_RESET);
}
Остальная часть программы работает
|
|
|
|
18.01.2013, 17:01
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 918
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Не срабатывают линии входа STM32
Сообщение от sanstan
|
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE); //
if((GPIOB-›IDR & GPIO_Pin_2)==либо 0 либо 1){
GPIO_WriteBit(GPIOC,GPIO_Pin_9,Bit_SET);
}
else{
GPIO_WriteBit(GPIOC,GPIO_Pin_9,Bit_RESET);
}
|
А ну если так?
Код:
|
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_AP B2Periph_GPIOC , ENABLE); //
while(1)
{
if(GPIOB-›IDR & GPIO_Pin_2){
GPIO_WriteBit(GPIOC,GPIO_Pin_9,Bit_SET);
}
else{
GPIO_WriteBit(GPIOC,GPIO_Pin_9,Bit_RESET);
}
} |
Сообщение от sanstan
|
Остальная часть программы работает
|
Страшно подумать, что там!
|
|
|
|
18.01.2013, 17:10
|
|
Прописка
Регистрация: 06.03.2007
Сообщений: 144
Сказал спасибо: 22
Сказали Спасибо 10 раз(а) в 10 сообщении(ях)
|
Re: Не срабатывают линии входа STM32
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_AP B2Periph_GPIOC , ENABLE); //
Подключены оба порта в том то и дело
Код:
|
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE );
PORTA.GPIO_Mode=GPIO_Mode_IN_FLOATING;
PORTA.GPIO_Speed=GPIO_Speed_50MHz;
PORTA.GPIO_Pin|=(GPIO_Pin_2);
GPIO_Init(GPIOA,&PORTA);
PORTC.GPIO_Mode=GPIO_Mode_Out_PP;
PORTC.GPIO_Speed=GPIO_Speed_50MHz;
PORTC.GPIO_Pin|=(GPIO_Pin_8 | GPIO_Pin_9 );
GPIO_Init(GPIOC, &PORTC);
....
while(1){
if(GPIOA-›IDR & GPIO_Pin_2){
GPIO_WriteBit(GPIOC,GPIO_Pin_9,Bit_SET);
}
else{
GPIO_WriteBit(GPIOC,GPIO_Pin_9,Bit_RESET);
}
} |
|
|
|
|
18.01.2013, 17:18
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 918
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Не срабатывают линии входа STM32
Сообщение от sanstan
|
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_AP B2Periph_GPIOC , ENABLE); //
Подключены оба порта в том то и дело
Код:
|
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE );
PORTA.GPIO_Mode=GPIO_Mode_IN_FLOATING;
PORTA.GPIO_Speed=GPIO_Speed_50MHz;
PORTA.GPIO_Pin|=(GPIO_Pin_2);
GPIO_Init(GPIOA,&PORTA);
PORTC.GPIO_Mode=GPIO_Mode_Out_PP;
PORTC.GPIO_Speed=GPIO_Speed_50MHz;
PORTC.GPIO_Pin|=(GPIO_Pin_8 | GPIO_Pin_9 );
GPIO_Init(GPIOC, &PORTC);
....
while(1){
if(GPIOA-›IDR & GPIO_Pin_2){
GPIO_WriteBit(GPIOC,GPIO_Pin_9,Bit_SET);
}
else{
GPIO_WriteBit(GPIOC,GPIO_Pin_9,Bit_RESET);
}
} |
|
А это что за фигня?
|
|
|
|
18.01.2013, 17:23
|
|
Прописка
Регистрация: 06.03.2007
Сообщений: 144
Сказал спасибо: 22
Сказали Спасибо 10 раз(а) в 10 сообщении(ях)
|
Re: Не срабатывают линии входа STM32
PORTA.GPIO_Pin|=(GPIO_Pin_2);// (1‹‹2)
PORTC.GPIO_Pin|=(GPIO_Pin_8 | GPIO_Pin_9 );//(1‹‹8 )+(1‹‹9)
//подключение пинов
|
|
|
|
18.01.2013, 17:23
|
|
Почётный гражданин KAZUS.RU
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
|
Re: Не срабатывают линии входа STM32
PORTA.GPIO_Pin|=(GPIO_Pin_2);
PORTA.GPIO_Pin = GPIO_Pin_2;
GPIO_Init() - инициализирует побитно, а что там Вам в структуре досталось в стеке сам черт не знает ))
|
|
|
Сказали "Спасибо" Boba_spb
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 02:29.
|
|