Ich hab das Programm (Toggle LED) aus dem EXamble genommen und debuggert. Es hat supper funktioniert.
Step by step habe ich das Programm erweitert und bei jede Erweiterung habe das Programm erneut debugg um ich sicher zu sein dass die neue erweiterung hat die Funktion von Blinken_Leds nicht beeinflüssen.
1) habe ich NVIC und Inputcapture hingeschrieben. debuggert--> LEDs leuchten.ok!
2)danach die VOLTEILE, debuggert---> LEDS leuchten.ok!
3)RCC-Configuration hingefügt, debuggert-->LEDs leuchten. Ok!
4) dann das GPIO-MODE habe ich von IPD zu In_Floating geändert,debuggert--->LEDS leuchten nicht!! ok das ist Normal.
Was ich annormal finde, dass ich den GPIO-MODE auf IPD zurücksetze und trotzdem leuchten die LEDS nicht. warum?
mehr als diese 4 schritte habe ich and das Programm von LED-Toggle nicht geändert und sie leuchten nicht mehr obwohl sie besitzen den Orginalen Zustand.
was könnte dahinten stecken????
Danch habe ich die RCC von AFIO deaktiviert, trotzdem leuchten die LEDS nicht mehr.
/* Includes */
#include <stddef.h>
#include "stm32f10x.h"
NVIC_InitTypeDef NVIC_InitStructure; <-- das ist die erste 'Änderung, LEDs leuchten noch
TIM_ICInitTypeDef Input_Capture;
GPIO_InitTypeDef GPIO_Inity;
volatile uint32_t INT_Counter = 0;<-- zwite Erweiterung, LEDS leuchten noch
volatile uint32_t delayCount;
void RCC_Configuration(void)
{
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); <-- dritte, LEDS leuchten
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);<-- vierte, LEDS leuchten nicht mehr
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
}
void delayLoop()
{
volatile uint32_t delayCount = 1000000;
while (delayCount > 0)
{
delayCount--;
}
}
void GPIO_Setup ()
{
GPIO_InitTypeDef GPIO_Inity;
GPIO_Inity.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9;
GPIO_Inity.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Inity.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIO_Inity);
GPIO_Inity.GPIO_Pin = GPIO_Pin_1;
GPIO_Inity.GPIO_Mode = GPIO_Mode_IPD;
GPIO_Inity.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_Inity);
}
int main (void)
{
uint8_t read_A0 = 0;
SystemInit();
GPIO_Setup();
while (1)
{
read_A0 =GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0);
if(read_A0)
{
GPIOC->BSRR = GPIO_Pin_8; // LED On
delayLoop();
GPIOC->BRR = GPIO_Pin_8; // LED Off
delayLoop();
GPIOC->BSRR = GPIO_Pin_9; // LED On
delayLoop();
GPIOC->BRR = GPIO_Pin_9; // LED Off
delayLoop();
}
}
return 0;
}
Lesezeichen