71 lines
2.3 KiB
C
71 lines
2.3 KiB
C
/*
|
|
Name: Schieder Fabian
|
|
Datum: 21.01.2026
|
|
Datei: ProtConfig.c
|
|
|
|
Hardware: MDDS
|
|
|
|
Funktionsbeschreibung:
|
|
Die Ports PA0 bis PA7 sollen als Ausgänge konfiguriert werden.
|
|
Der Port PC0 soll als Eingang pull up konfiguriert werden.
|
|
*/
|
|
|
|
#include "stm32f10x.h"
|
|
|
|
int var_C = 0;
|
|
int var_B = 0;
|
|
int var_output = 0;
|
|
|
|
void PortConfig(void);
|
|
|
|
int main(void)
|
|
{
|
|
PortConfig();
|
|
|
|
while(1)
|
|
{
|
|
var_C = GPIOC->IDR; // IDR von Port C0 - C15 in var_C kopiert
|
|
var_B = GPIOB->IDR; // IDR von Port B0 - B15 in var_B kopiert
|
|
|
|
var_output = GPIOC->IDR &= 0b00001111; // PC0 - PC3 vom IDR Port C in var_output kopiert
|
|
|
|
var_C = (var_C >> 8); // 8 mal Schiebebefehl nach rechts, so wird das Bit 13 nach 5, und 12 nach 4 geschoben
|
|
|
|
var_C &= 0b00110000; // nur PC4 und PC5 werden berücksichtigt
|
|
var_output |= var_C; // PC4 und PC5 werden in var_output geändert
|
|
|
|
var_B &= 0b11000000; // nur PB6 und PB7 werden berücksichtigt
|
|
var_output |= var_B; // PB6 und PB7 werden in der var_output geändert
|
|
|
|
GPIOA->ODR = var_output;
|
|
|
|
// GPIOA->ODR = GPIOC->IDR &= 0x00000001;
|
|
}
|
|
}
|
|
|
|
//Funktion PortConfig
|
|
|
|
void PortConfig(void)
|
|
{
|
|
//RCC->APB2ENR |= 0x00000004; // alternative, Bit2 auf 1
|
|
RCC->APB2ENR |= RCC_APB2ENR_IOPAEN; // Takt für Port A verbunden
|
|
RCC->APB2ENR |= RCC_APB2ENR_IOPBEN; // Takt für Port B verbunden
|
|
RCC->APB2ENR |= RCC_APB2ENR_IOPCEN; // Takt für Port C verbunden
|
|
|
|
GPIOA->CRL &= 0x00000000; // Register löschen
|
|
GPIOA->CRL |= 0x22222222; // Port A0 bis A7 Output 2MHz push pull
|
|
|
|
GPIOC->CRL &= 0xFFFF0000; // 4 Bits für PC0 - PC3 löschen, der Rest bleibt erhalten
|
|
GPIOC->CRL |= 0x00008888; // PC0 - PC3 als input konfiguriert
|
|
|
|
GPIOC->CRH &= 0xFF00FFFF; // PC12 und PC13 auf 0 setzten
|
|
GPIOC->CRH |= 0x00880000; // PC12 und 13 als input konfiguriert
|
|
|
|
GPIOB->CRL &= 0x00FFFFFF; // PB6 und PC7 auf 0 gesetzt.
|
|
GPIOB->CRL |= 0x88000000; // PB6 und PB7 als input
|
|
|
|
GPIOC->ODR = 0x300F; // Pull up für PC0 - PC3 und PC12 und PC13 einschalten
|
|
GPIOB->ODR = 0x00C0; // Pull up für PB6 und PB7 einschalten
|
|
|
|
}
|