Aktionen
Example code » Historie » Revision 1
Revision 1/3
| Weiter »
Maximilian Seesslen, 27.01.2026 16:16
Example code¶
TSC_HandleTypeDef htsc;
void MX_TSC_Init(void)
{
htsc.Instance = TSC;
htsc.Init.CTPulseHighLength = TSC_CTPH_2CYCLES;
htsc.Init.CTPulseLowLength = TSC_CTPL_2CYCLES;
htsc.Init.SpreadSpectrum = DISABLE;
htsc.Init.SpreadSpectrumDeviation = 0;
htsc.Init.SpreadSpectrumPrescaler = TSC_SS_PRESC_DIV1;
htsc.Init.PulseGeneratorPrescaler = TSC_PG_PRESC_DIV4;
htsc.Init.MaxCountValue = TSC_MCV_16383;
htsc.Init.IODefaultMode = TSC_IODEF_OUT_PP_LOW;
htsc.Init.SynchroPinPolarity = TSC_SYNC_POLARITY_FALLING;
htsc.Init.AcquisitionMode = TSC_ACQ_MODE_NORMAL;
htsc.Init.MaxCountInterrupt = DISABLE;
if (HAL_TSC_Init(&htsc) != HAL_OK)
{
Error_Handler();
}
// IOs konfigurieren
TSC_IOConfigTypeDef IoConfig;
IoConfig.ChannelIOs = TSC_GROUP1_IO1; // PA0
IoConfig.SamplingIOs = TSC_GROUP1_IO2; // PA1
IoConfig.ShieldIOs = 0;
HAL_TSC_IOConfig(&htsc, &IoConfig);
}
uint16_t TSC_Read(void)
{
// Start acquisition
HAL_TSC_Start(&htsc);
// Warten bis fertig
HAL_TSC_PollForAcquisition(&htsc);
// Ergebnis holen (Gruppe 1)
uint16_t value = HAL_TSC_GroupGetValue(&htsc, TSC_GROUP1_IDX);
// TSC wieder freigeben
HAL_TSC_Stop(&htsc);
return value;
}
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_TSC_Init();
while (1)
{
uint16_t val = TSC_Read();
if (val < 3000)
{
// Taste berührt
}
else
{
// Taste nicht berührt
}
HAL_Delay(10);
}
}
nicht berührt: 4000–8000
berührt: 500–3000
Von Maximilian Seesslen vor etwa 13 Stunden aktualisiert · 1 Revisionen