Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stm32fxxx_hal.h"
- #include "defines.h"
- #include "tm_stm32_disco.h"
- #include "tm_stm32_delay.h"
- #include "tm_stm32_touch.h"
- #include "tm_stm32_lcd.h"
- TM_TOUCH_t TS;
- ADC_HandleTypeDef hadc3;
- TIM_HandleTypeDef TIM_Handle;
- static void MainMenu(void);
- static void TimerSeven(void);
- static void Additional(void);
- static void Systema(void);
- static void Welcome(void);
- static void ControlMenu(void);
- static void ControlMenuPush(void);
- static void GPIO_Init(void);
- static void MX_ADC3_Init(void);
- static void StepperToLeft(void);
- static void StepperStop(void);
- static void MX_ADC3_Init(void);
- TM_FONT_SIZE_t FontSize;
- volatile unsigned int zaehl=0;
- char str[200]; // Touch
- char ueberschrift[]="W E L C O M E";
- char ueberschrift2[]="";
- char ueberschrift3[]="*************";
- char option1[]="Monitor";
- char option2[]="Control";
- char option3[]="System";
- char option4[]="";
- char control_option1[]="Manual";
- char control_option2[]="Automatic";
- char control_option3[]="Other";
- char control_manual1[]="ON";
- char control_manual2[]="OFF";
- char control_manual3[]="LEFT";
- char control_manual4[]="RIGHT";
- char breite[]="0";
- char hoehe[]="0";
- char zeit[]="0";
- char pclk1[]="0";
- char hclk[]="0";
- char sysclock[]="0";
- char pclk2[]="0";
- char minute[]="0";
- char adceins[]="0";
- char str[200];
- int location=0;
- int a=0;
- int value=0;
- int dauer=10;
- int zaehler=0;
- int z3=0;
- int wuha=0;
- int main(void) {
- uint8_t i;
- TimerSeven();
- TM_RCC_InitSystem();
- HAL_Init();
- TM_LCD_Init();
- GPIO_Init();
- MX_ADC3_Init();
- TM_LCD_SetOrientation(1);
- TM_LCD_Fill(0x0000);
- TS.Orientation = TM_LCD_GetOrientation();
- TM_TOUCH_Init(NULL, &TS);
- TM_DELAY_Init();
- TM_TOUCH_Init(NULL, &TS);
- Welcome();
- MainMenu();
- //HAL_ADC_Start(&hadc3);
- HAL_ADC_Start(&hadc3);
- while (1) {
- wuha = HAL_ADC_GetValue(&hadc3);
- sprintf(str, "Value : %3d", wuha);
- TM_LCD_SetXY(200, 200);
- TM_LCD_SetColors(0x0000, 0xFFFF);
- TM_LCD_Puts(str);
- TM_TOUCH_Read(&TS);
- if (TS.NumPresses) {
- //sprintf(str, "X: %3d Y: %3d", TS.X[0], TS.Y[0]);
- //TM_LCD_SetXY(180, 0);
- //TM_LCD_Puts(str);
- // Monitor Button
- if(TS.X[0]<=120 && TS.Y[0]>=203){
- if(location==1){
- TM_LCD_SetXY(200, 0);
- TM_LCD_SetColors(0x0000, 0xFFFF);
- //TM_LCD_Puts("Location=1");
- }
- else{
- location=1;
- TM_LCD_DrawFilledRectangle(0, 0, 480, 203, 0x0000);
- }
- }
- //Control Button
- if(TS.X[0] >120 && TS.X[0] <=240 && TS.Y[0]>=203){
- if (location==2){
- TM_LCD_SetXY(200, 0);
- TM_LCD_SetColors(0x0000, 0xFFFF);
- //TM_LCD_Puts("Location=2");
- //TM_TOUCH_Read(&TS);
- //if (TS.NumPresses){
- //if(TS.X[0]>=360 && TS.Y[0]<=68){
- }
- else{
- location=2;
- TM_LCD_DrawFilledRectangle(0, 0, 480, 203, 0x0000);
- ControlMenu();
- }
- }
- // System Button
- if(TS.X[0]>240 && TS.X[0]<=360 && TS.Y[0]>=203){
- if (location==3){
- TM_LCD_SetXY(200, 0);
- TM_LCD_SetColors(0x0000, 0xFFFF);
- //TM_LCD_Puts("Location=3");
- }
- else{
- location=3;
- TM_LCD_DrawFilledRectangle(0, 0, 480, 203, 0x0000);
- Systema();
- }
- }
- // Circle Button
- if(TS.X[0]>360 && TS.X[0] <=480 && TS.Y[0]>=203){
- location=4;
- TM_LCD_DrawFilledRectangle(0, 0, 480, 272, 0x0000);
- }
- // Control Extramenue
- if(TS.X[0]>=360 && TS.Y[0]<68){
- if(location==2){
- location=5;
- TM_LCD_SetXY(200, 0);
- TM_LCD_SetColors(0x0000, 0xFFFF);
- TM_LCD_Puts("Location=5");
- //Button ON
- TM_LCD_DrawRectangle(0, 0, 120, 68, 0xFFFF);
- TM_FONT_GetStringSize(control_manual1, &FontSize, &TM_Font_11x18);
- TM_LCD_SetXY((60-(FontSize.Width/2)), 34 - (FontSize.Height/2));
- TM_LCD_SetColors(0xFBE4, 0x0000);
- TM_LCD_Puts(control_manual1);
- //Button OFF
- TM_LCD_DrawRectangle(0, 68, 120, 68, 0xFFFF);
- TM_FONT_GetStringSize(control_manual2, &FontSize, &TM_Font_11x18);
- TM_LCD_SetXY((60-(FontSize.Width/2)), 102 - (FontSize.Height/2));
- TM_LCD_SetColors(0xFBE4, 0x0000);
- TM_LCD_Puts(control_manual2);
- //Button Left
- TM_LCD_DrawRectangle(120, 0, 120, 68, 0xFFFF);
- TM_FONT_GetStringSize(control_manual3, &FontSize, &TM_Font_11x18);
- TM_LCD_SetXY((180-(FontSize.Width/2)), 34 - (FontSize.Height/2));
- TM_LCD_SetColors(0xFBE4, 0x0000);
- TM_LCD_Puts(control_manual3);
- //Button Right
- TM_LCD_DrawRectangle(120, 68, 120, 68, 0xFFFF);
- TM_FONT_GetStringSize(control_manual4, &FontSize, &TM_Font_11x18);
- TM_LCD_SetXY((180-(FontSize.Width/2)), 102 - (FontSize.Height/2));
- TM_LCD_SetColors(0xFBE4, 0x0000);
- TM_LCD_Puts(control_manual4);
- }
- }
- if(TS.X[0]>=0 && TS.X[0]<120 && TS.Y[0]<68){
- if(location==5){
- TM_LCD_SetXY(200, 0);
- TM_LCD_SetColors(0x0000, 0xFFFF);
- TM_LCD_Puts("Location=6");
- HAL_GPIO_WritePin(GPIOI, GPIO_PIN_2, 1);
- }
- }
- if(TS.X[0]>=0 && TS.X[0]<120 && TS.Y[0]>68 && TS.Y[0]<=136){
- if(location==5){
- TM_LCD_SetXY(200, 0);
- TM_LCD_SetColors(0x0000, 0xFFFF);
- TM_LCD_Puts("Location=7");
- HAL_GPIO_WritePin(GPIOI, GPIO_PIN_2, 0);
- }
- }
- if(TS.X[0]>=120 && TS.X[0]<240 && TS.Y[0]<68){
- if(location==5){
- TM_LCD_SetXY(200, 0);
- TM_LCD_SetColors(0x0000, 0xFFFF);
- TM_LCD_Puts("Location=8");
- StepperToLeft();
- }
- }
- if(TS.X[0]>=120 && TS.X[0]<240 && TS.Y[0]>68 && TS.Y[0]<=136){
- if(location==5){
- TM_LCD_SetXY(200, 0);
- TM_LCD_SetColors(0x0000, 0xFFFF);
- TM_LCD_Puts("Location=9");
- StepperStop();
- }
- }
- }
- }
- }
- void TIM7_IRQHandler(void)
- {
- __HAL_TIM_CLEAR_FLAG(&TIM_Handle, TIM_FLAG_UPDATE);
- //value = HAL_ADC_GetValue(&hadc3);
- zaehl=zaehl+1;
- TM_LCD_SetColors(0x0000, 0xFFFF);
- TM_LCD_SetXY(0, 50);
- if (location==3){
- sprintf(zeit, "An Zeit: %d s", zaehl);
- TM_LCD_Puts(zeit);
- }
- //if(zaehl>=60){
- //TM_LCD_SetColors(0x0000, 0xFFFF);
- //TM_LCD_SetXY(180, 50);
- //sprintf(minute, "= %d min", zaehl/60);
- //TM_LCD_Puts(minute);
- //}
- }
- void StepperToLeft(){
- for(z3=0;z3<=50;z3++){
- HAL_GPIO_WritePin(GPIOI, GPIO_PIN_3, 0);
- HAL_Delay(dauer);
- HAL_Delay(dauer);
- HAL_GPIO_WritePin(GPIOG, GPIO_PIN_7, 1);
- HAL_Delay(dauer);
- HAL_GPIO_WritePin(GPIOI, GPIO_PIN_2, 0);
- HAL_Delay(dauer);
- HAL_GPIO_WritePin(GPIOH, GPIO_PIN_6, 0);
- HAL_Delay(dauer);
- HAL_GPIO_WritePin(GPIOI, GPIO_PIN_3, 0);
- HAL_Delay(dauer);
- HAL_GPIO_WritePin(GPIOG, GPIO_PIN_7, 0);
- HAL_Delay(dauer);
- HAL_GPIO_WritePin(GPIOI, GPIO_PIN_2, 1);
- HAL_Delay(dauer);
- HAL_GPIO_WritePin(GPIOH, GPIO_PIN_6, 0);
- HAL_Delay(dauer);
- HAL_GPIO_WritePin(GPIOI, GPIO_PIN_3, 0);
- HAL_Delay(dauer);
- HAL_GPIO_WritePin(GPIOG, GPIO_PIN_7, 0);
- HAL_Delay(dauer);
- HAL_GPIO_WritePin(GPIOI, GPIO_PIN_2, 0);
- HAL_Delay(dauer);
- HAL_GPIO_WritePin(GPIOH, GPIO_PIN_6, 1);
- HAL_Delay(dauer);
- HAL_GPIO_WritePin(GPIOI, GPIO_PIN_3, 0);
- HAL_Delay(dauer);
- HAL_GPIO_WritePin(GPIOG, GPIO_PIN_7, 0);
- HAL_Delay(dauer);
- HAL_GPIO_WritePin(GPIOI, GPIO_PIN_2, 0);
- HAL_Delay(dauer);
- HAL_GPIO_WritePin(GPIOH, GPIO_PIN_6, 0);
- HAL_Delay(dauer);
- HAL_GPIO_WritePin(GPIOI, GPIO_PIN_3, 1);
- HAL_Delay(dauer);
- HAL_Delay(dauer);
- }
- }
- void StepperStop(){
- HAL_GPIO_WritePin(GPIOG, GPIO_PIN_7, 0);
- HAL_GPIO_WritePin(GPIOI, GPIO_PIN_2, 0);
- HAL_GPIO_WritePin(GPIOH, GPIO_PIN_6, 0);
- HAL_GPIO_WritePin(GPIOI, GPIO_PIN_3, 0);
- }
- void MainMenu(void){
- //Untermenue
- //TM_LCD_SetColors(uint32_t Foreground, uint32_t Background)
- //Button 1
- TM_LCD_DrawRectangle(0, 203, 120, 68, 0xFFFF);
- TM_FONT_GetStringSize(option1, &FontSize, &TM_Font_11x18);
- TM_LCD_SetXY((60-FontSize.Width/2), 225);
- TM_LCD_SetColors(0xFFFF, 0x0000);
- TM_LCD_Puts(option1);
- //Button 2
- TM_LCD_DrawRectangle(120, 203, 120, 68, 0xFFFF);
- TM_FONT_GetStringSize(option2, &FontSize, &TM_Font_11x18);
- TM_LCD_SetXY((160-FontSize.Height), 225);
- TM_LCD_SetColors(0xFFFF, 0x0000);
- TM_LCD_Puts(option2);
- //Button 3
- TM_LCD_DrawRectangle(240, 203, 120, 68, 0xFFFF);
- TM_FONT_GetStringSize(option3, &FontSize, &TM_Font_11x18);
- TM_LCD_SetXY((280-FontSize.Height), 225);
- TM_LCD_SetColors(0xFFFF, 0x0000);
- TM_LCD_Puts(option3);
- //Button 4
- TM_LCD_DrawRectangle(360, 203, 120, 68, 0xFFFF);
- TM_LCD_DrawFilledCircle(420, 238, 15, 0xFFFF);
- //TM_FONT_GetStringSize(option4, &FontSize, &TM_Font_11x18);
- //TM_LCD_SetXY((400-FontSize.Height), 220);
- //TM_LCD_SetColors(0xFFFF, 0x0000);
- //TM_LCD_Puts(option4);
- }
- void ControlMenu(void){
- //Button 1
- TM_LCD_DrawRectangle(360, 0, 120, 68, 0xFFFF);
- TM_FONT_GetStringSize(control_option1, &FontSize, &TM_Font_11x18);
- TM_LCD_SetXY((420-(FontSize.Width/2)), 34 - (FontSize.Height/2));
- TM_LCD_SetColors(0xF800, 0x0000);
- TM_LCD_Puts(control_option1);
- //Button 2
- TM_LCD_DrawRectangle(360, 68, 120, 68, 0xFFFF);
- TM_FONT_GetStringSize(control_option2, &FontSize, &TM_Font_11x18);
- TM_LCD_SetXY((420-(FontSize.Width/2)), 102 - (FontSize.Height/2));
- TM_LCD_SetColors(0xF800, 0x0000);
- TM_LCD_Puts(control_option2);
- //Button 3
- TM_LCD_DrawRectangle(360, 136, 120, 66, 0xFFFF);
- TM_FONT_GetStringSize(control_option3, &FontSize, &TM_Font_11x18);
- TM_LCD_SetXY((420-(FontSize.Width/2)), 170 - (FontSize.Height/2));
- TM_LCD_SetColors(0xF800, 0x0000);
- TM_LCD_Puts(control_option3);
- }
- void TimerSeven(void){
- __TIM7_CLK_ENABLE();
- TIM_Handle.Init.Prescaler = 54000;
- TIM_Handle.Init.CounterMode = TIM_COUNTERMODE_UP;
- TIM_Handle.Init.Period = 2000;
- TIM_Handle.Instance = TIM7; //Same timer whose clocks we enabled
- HAL_TIM_Base_Init(&TIM_Handle); // Init timer
- HAL_TIM_Base_Start_IT(&TIM_Handle); // start timer interrupts
- HAL_NVIC_SetPriority(TIM7_IRQn, 0, 1);
- HAL_NVIC_EnableIRQ(TIM7_IRQn);
- HAL_NVIC_SetPriority(ADC_IRQn, 0, 0);
- HAL_NVIC_EnableIRQ(ADC_IRQn);
- }
- void Additional(void){
- //Button 5
- TM_LCD_DrawRectangle(360, 0, 120, 203, 0xFFFF);
- TM_FONT_GetStringSize(option4, &FontSize, &TM_Font_11x18);
- TM_LCD_SetXY((400-FontSize.Height), 220);
- TM_LCD_SetColors(0xFFFF, 0x0000);
- TM_LCD_Puts(option4);
- }
- void Systema(void){
- TM_LCD_SetXY(0, 0);
- sprintf(breite, "Breite: %d", TM_LCD_GetWidth());
- TM_LCD_Puts(breite);
- TM_LCD_SetXY(0, 25);
- sprintf(hoehe, "Hoehe: %d", TM_LCD_GetHeight());
- TM_LCD_Puts(hoehe);
- TM_LCD_SetXY(0, 50);
- sprintf(zeit, "An Zeit: %d s", zaehl);
- TM_LCD_Puts(zeit);
- TM_LCD_SetColors(0x0000, 0xFFFF);
- TM_LCD_SetXY(0, 75);
- sprintf(pclk1, "PCLK1: %d MHz", HAL_RCC_GetPCLK1Freq()/1000000);
- TM_LCD_Puts(pclk1);
- TM_LCD_SetColors(0x0000, 0xFFFF);
- TM_LCD_SetXY(0, 100);
- sprintf(pclk2, "PCLK2: %d MHz", HAL_RCC_GetPCLK2Freq()/1000000);
- TM_LCD_Puts(pclk2);
- TM_LCD_SetColors(0x0000, 0xFFFF);
- TM_LCD_SetXY(0, 125);
- sprintf(hclk, "HCLK: %d MHz", HAL_RCC_GetHCLKFreq()/1000000);
- TM_LCD_Puts(hclk);
- TM_LCD_SetColors(0x0000, 0xFFFF);
- TM_LCD_SetXY(0, 150);
- sprintf(sysclock, "SCLK: %d MHz", HAL_RCC_GetSysClockFreq()/1000000);
- TM_LCD_Puts(sysclock);
- TM_LCD_SetColors(0x0000, 0xFFFF);
- TM_LCD_SetXY(200, 150);
- sprintf(adceins, "Voltage: %d ", value);
- TM_LCD_Puts(adceins);
- }
- void Welcome(void){
- TM_LCD_SetColors(0xFFFF, 0x0000);
- TM_LCD_SetFont(&TM_Font_11x18);
- TM_FONT_GetStringSize(ueberschrift, &FontSize, &TM_Font_11x18);
- TM_LCD_SetXY((TM_LCD_GetWidth() - FontSize.Width) / 2, 15);
- TM_LCD_Puts(ueberschrift);
- TM_LCD_SetXY((TM_LCD_GetWidth() - FontSize.Width) / 2, 35);
- TM_LCD_Puts(ueberschrift3);
- TM_LCD_SetXY((TM_LCD_GetWidth() - FontSize.Width) / 2, 50);
- TM_LCD_Puts(ueberschrift2);
- }
- void GPIO_Init(){
- GPIO_InitTypeDef GPIO_InitStruct;
- __GPIOI_CLK_ENABLE();
- __GPIOH_CLK_ENABLE();
- __GPIOA_CLK_ENABLE();
- __GPIOG_CLK_ENABLE();
- __ADC3_CLK_ENABLE();
- GPIO_InitStruct.Pin = GPIO_PIN_0;
- GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
- HAL_NVIC_SetPriority(ADC_IRQn, 0, 0);
- HAL_NVIC_EnableIRQ(ADC_IRQn);
- //__ADC1_CLK_ENABLE();
- //GPIOI
- GPIO_InitStruct.Pin = GPIO_PIN_2 | GPIO_PIN_3;
- GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
- HAL_GPIO_Init(GPIOI, &GPIO_InitStruct);
- //GPIOH
- GPIO_InitStruct.Pin = GPIO_PIN_6;
- GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
- HAL_GPIO_Init(GPIOH, &GPIO_InitStruct);
- //GPIOA
- GPIO_InitStruct.Pin = GPIO_PIN_8;
- GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
- HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
- //GPIOG
- GPIO_InitStruct.Pin = GPIO_PIN_7 | GPIO_PIN_6;
- GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
- HAL_GPIO_Init(GPIOG, &GPIO_InitStruct);
- /**ADC1 GPIO Configuration
- PA0/WKUP ------> ADC1_IN0
- */
- //GPIO_InitStruct.Pin = GPIO_PIN_0;
- //GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
- //GPIO_InitStruct.Pull = GPIO_NOPULL;
- //HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
- }
- void MX_ADC3_Init(void)
- {
- ADC_ChannelConfTypeDef sConfig;
- /**Configure the global features of the ADC (Clock, Resolution, Data Alignment and number of conversion)
- */
- hadc3.Instance = ADC3;
- hadc3.Init.ClockPrescaler = ADC_CLOCKPRESCALER_PCLK_DIV4;
- hadc3.Init.Resolution = ADC_RESOLUTION12b;
- hadc3.Init.ScanConvMode = DISABLE;
- hadc3.Init.ContinuousConvMode = ENABLE;
- hadc3.Init.DiscontinuousConvMode = DISABLE;
- hadc3.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;
- hadc3.Init.DataAlign = ADC_DATAALIGN_RIGHT;
- hadc3.Init.NbrOfConversion = 1;
- hadc3.Init.DMAContinuousRequests = DISABLE;
- hadc3.Init.EOCSelection = EOC_SINGLE_CONV;
- HAL_ADC_Init(&hadc3);
- /**Configure for the selected ADC regular channel its corresponding rank in the sequencer and its sample time.
- */
- sConfig.Channel = ADC_CHANNEL_0;
- sConfig.Rank = 1;
- sConfig.SamplingTime = ADC_SAMPLETIME_3CYCLES;
- HAL_ADC_ConfigChannel(&hadc3, &sConfig);
- }
- void ADC_IRQHandler(void)
- {
- /* USER CODE BEGIN ADC_IRQn 0 */
- /* USER CODE END ADC_IRQn 0 */
- HAL_ADC_IRQHandler(&hadc3);
- /* USER CODE BEGIN ADC_IRQn 1 */
- /* USER CODE END ADC_IRQn 1 */
- }
Advertisement
Add Comment
Please, Sign In to add comment