Answered step by step
Verified Expert Solution
Question
1 Approved Answer
Please simplify or alter my code, If there is anyway to change the way the structure the code is written without changing what the code
Please simplify or alter my code, If there is anyway to change the way the structure the code is written without changing what the code does. Please do so below, this is in C.
#include "stm321476xx.h" void set_Display(int set_Number) { if (set_Number 0){ GPIOE->ODR 1= GPIO_ODR_ODR_10; // Output PE10 a GPIOE-MODR |= GPIO_ODR_ODR_11; // Output Pall b GPIOE-MODR |= GPIO_ODR_ODR_12; // Output PE12 C GPIOE->ODR 1= GPIO ODRODR_13; // Output Pal3 d GPIOE->ODR 1= GPIO ODRODR_14; // Output PE14 e GPIOE->ODR = GPIO_ODR_ODR_15; // Output PE15 E GPIOH->ODR &= -GPIO_ODR_ODR_0; // Output PH00 g 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 else if (set_Number == 1) { GPIOE->ODR &= -GPIO_ODR_ODR_10; // Output PE10 a GPIOE-MODR 1= GPIO_ODR_ODR_11; // Output Pell b GPIOE-MODR = GPIO_ODR_ODR_12; // Output PE12 c GPIOE-MODR &= -GPIO_ODR_ODR_13; // Output PE13 d GPIOE->ODR &= -GPIO_ODR_ODR_14; // Output PE14 e GPIOE-MODR &= -GPIO_ODR_ODR_15; // Output PE15 E GPIOH->ODR &= -GPIO_ODR_ODR_0; // Output PHO0 g } else if (set_Number 2) { GPIOE->ODR 1= GPIO_ODR_ODR_10; // Output PE10 a GPIOE->ODR [= GPIO_ODR_ODR_11; // Output Pell b GPIOE->ODR &= ~GPIO_ODR_ODR_12; // Output PE12 c GPIOE-MODR 1= GPIO_ODR_ODR_13; // Output PE13 d GPIOE-MODR |= GPIO_ODR_ODR_14; // Output PE14 e GPIOE-MODR &= -GPIO_ODR_ODR_15; // Output PE15 E GPIOH->ODR = GPIO_ODR_ODR_0; // Output PHO0 g } else if (set_Number == 3) { GPIOE->ODR 1= GPIO_ODR_ODR_10; // Output Pelo a GPIOE->ODR |= GPIO_ODR_ODR_11; // Output Pall b GPIOE->ODR |= GPIO_ODR_ODR_12; // Output PE12 C GPIOE-MODR |= GPIO_ODR_ODR_13; // Output PE13 d GPIOE-MODR &= -GPIO_ODR_ODR_14; // Output PE14 e GPIOE-MODR &= -GPIO_ODR_ODR_15; // Output PE15 E GPIOH->ODR = GPIO_ODR_ODR_0; // Output PH00 g } else if (set_Number == 4){ GPIOE-MODR &= -GPIO_ODR_ODR_10; // Output PE10 a GPIOE-MODR |= GPIO_ODR_ODR_11; // Output Pall b GPIOE->ODR 1= GPIO ODRODR_12; // Output PE12 C GPIOE->ODR &= -GPIO_ODR_ODR_13; // Output PE13 d GPIOE->ODR &= ~GPIO_ODR_ODR_14; // Output PE14 e GPIOE->ODR 1= GPIO_ODR_ODR_15; // Output PE15 f GPIOH->ODR |= GPIO_ODR_ODR_0; // Output PHO0 g IK 48 49 50 52 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 } else if (set_Number 5) { GPIOE->ODR |= GPIO_ODR_ODR_10; // Output PE10 a GPIOE->ODR &= -GPIO_ODR_ODR_11; // Output Pell b GPIOE->ODR 1= GPIO_ODR_ODR_12; // Output PE12 C GPIOE->ODR 1= GPIO_ODR_ODR_13; // Output P13 d GPIOE->ODR &= -GPIO_ODR_ODR_14; // Output PE14 e GPIOE->ODR 1= GPIO_ODR_ODR_15; // Output PE15 f GPIOH->ODR = GPIO_ODR_ODR_0; // Output PHO0 g } else if (set_Number == 0) { GPIOE->ODR 1= GPIO_ODR_ODR_10; // Output Pelo a GPIOE-MODR &= -GPIO_ODR_ODR_11; // Output Pell b GPIOE->ODR |= GPIO_ODR_ODR_12; // Output PE12 C GPIOE->ODR 1= GPIO_ODR_ODR_13; // Output PE13 d GPIOE->ODR 1= GPIO_ODR_ODR_14; // Output PE14 e GPIOE->ODR = GPIO_ODR_ODR_15; // Output PE15 E GPIOH->ODR = GPIO_ODR_ODR_0; // Output PH00 g } else if (set_Number == 7) { GPIOE->ODR 1= GPIO_ODR_ODR_10; // Output Pelo a GPIOE-MODR 1= GPIO_ODR_ODR_11; // Output Pell b GPIOE->ODR 1= GPIO_ODR_ODR_12; // Output PE12 C GPIOE->ODR &= -GPIO_ODR_ODR_13; // Output PE13 d GPIOE->ODR &= -GPIO_ODR_ODR_14; // Output PE14 e GPIOE->ODR &= -GPIO_ODR_ODR_15; // Output PE15 f GPIOH->ODR &= -GPIO_ODR_ODR_0; // Output PHO0 g } else if (set_Number 8){ GPIOE->ODR 1= GPIO_ODR_ODR_10; // Output Palo a GPIOE->ODR 1= GPIO_ODR_ODR_11; // Output Pell b GPIOE->ODR 1= GPIO_ODR_ODR_12; // Output PE12 C GPIOE->ODR 1= GPIO_ODR_ODR_13; // Output PE13 d GPIOE->ODR 1= GPIO_ODR_ODR_14; // Output PE14 e GPIOE-MODR 1= GPIO_ODR_ODR_15; // Output PE15 f GPIOH->ODR 1= GPIO_ODR_ODR_0; // Output PHO0 g } else if (set_Number 9) { GPIOE->ODR 1= GPIO_ODR_ODR_10; // Output PE10 a GPIOE->ODR 1= GPIO_ODR_ODR_11; // Output Pell b GPIOE->ODR 1= GPIO_ODR_ODR_12; // Output PE12 c GPIOE->ODR 1= GPIO_ODR_ODR_13; // Output PE13 d GPIOE->ODR &= -GPIO_ODR_ODR_14; // Output PE14 e GPIOE->ODR 1= GPIO_ODR_ODR_15; // Output PE15 f GPIOH->ODR 1= GPIO_ODR_ODR_0; // Output PH00 g } 93 94 int main(void) { RCC->CR = ((uint32_t) RCC_CR_HSION); //Enable High Speed Internal Clock (HSI = 16 MHz)) while ((RCC->CR & (uint32_t) RCC_CR_HSIRDY) 0) {;} //wait until HSI is ready RCC->CFGR &= (uint32_t) ((uint32_t) - (RCC_CFGR_SW)); //Select HSI as system clock source RCC->CFGR &= (uint32_t) RCC_CFGR_SW_HSI; //01:HSI16 oscillator used as system clock while ((RCC->CFGR && (uint32_t) RCC_CFGR_SWS)==0) {:} RCC->AHB2ENR 1= RCC_AHB2ENR_GPIOAEN; // Enable clock for GPIOA RCC->AHB2ENR 1= RCC_AHB2ENR_GPIOEEN; // Enable clock for GPIOE RCC->AHB2ENR 1= RCC_AHB2ENR_GPIOHEN; // Enable clock for GPIOH //PA3 GPIOA->MODER &= - (0x3 6); //clear mode bits GPIOA->PUPDR &= -(0x3 6); //clear pull up pull down GPIOA->PUPDR 1= 0x2 MODER &= -(Ox3 10); //clear mode bits GPIOA->PUPDR &= -(0x3 10); //clear pull up pull down GPIOA->PUPDR = 0x2 10; //set mode to pull down //PE10 set to segment a GPIOE->MODER &= -(0x300000 MODER [= Ox100000 ); //set mode to output //Ell set to segment b GPIOE->MODER &= *(0x300000 2); //clear mode bits GPIOE->MODER = Ox100000 MODER &= -(0x300000 MODER [= Ox100000 4; //set mode to output //PE13 set to segment d GPIOE->MODER &= -(Ox300000 MODER [= Ox100000 MODER &= -(Ox300000 MODER = Ox100000 MODER &= -(Ox3 30); //clear mode bits GPIOE->MODER [= Oxl 30; //set mode to output //El set to segment g GPIOH->MODER &= a (x3); //clear mode bits GPIOH->MODER 1= Oxl; //set mode to output //Dead loop & program hangs here while (1) int set_Number = 0; int time Counter = 0; int joy_Up = 0; int joy_Down 0; int previous_Counter = 0; int interval = 20000; while() { ++time_Counter; set_Display (set_Number); 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 joy_Up = GPIOA->IDR & GPIO_IDR_IDR_3; //Gets input from PE3 and sets it to joy_Up joy_Down = GPIOA->IDR & GPIO_IDR_IDR_5; //Gets input from PES and sets it to joy_Down if(time_Counter previous_Counter > interval) { previous_Counter = time_Counter; THE if(joy_Up > 0) { ++set_Number; } if(joy_Down > 0) { --set_Number; } if (set_Number > 9) { set_Number = 0; } U if (set_NumberODR 1= GPIO_ODR_ODR_10; // Output PE10 a GPIOE-MODR |= GPIO_ODR_ODR_11; // Output Pall b GPIOE-MODR |= GPIO_ODR_ODR_12; // Output PE12 C GPIOE->ODR 1= GPIO ODRODR_13; // Output Pal3 d GPIOE->ODR 1= GPIO ODRODR_14; // Output PE14 e GPIOE->ODR = GPIO_ODR_ODR_15; // Output PE15 E GPIOH->ODR &= -GPIO_ODR_ODR_0; // Output PH00 g 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 else if (set_Number == 1) { GPIOE->ODR &= -GPIO_ODR_ODR_10; // Output PE10 a GPIOE-MODR 1= GPIO_ODR_ODR_11; // Output Pell b GPIOE-MODR = GPIO_ODR_ODR_12; // Output PE12 c GPIOE-MODR &= -GPIO_ODR_ODR_13; // Output PE13 d GPIOE->ODR &= -GPIO_ODR_ODR_14; // Output PE14 e GPIOE-MODR &= -GPIO_ODR_ODR_15; // Output PE15 E GPIOH->ODR &= -GPIO_ODR_ODR_0; // Output PHO0 g } else if (set_Number 2) { GPIOE->ODR 1= GPIO_ODR_ODR_10; // Output PE10 a GPIOE->ODR [= GPIO_ODR_ODR_11; // Output Pell b GPIOE->ODR &= ~GPIO_ODR_ODR_12; // Output PE12 c GPIOE-MODR 1= GPIO_ODR_ODR_13; // Output PE13 d GPIOE-MODR |= GPIO_ODR_ODR_14; // Output PE14 e GPIOE-MODR &= -GPIO_ODR_ODR_15; // Output PE15 E GPIOH->ODR = GPIO_ODR_ODR_0; // Output PHO0 g } else if (set_Number == 3) { GPIOE->ODR 1= GPIO_ODR_ODR_10; // Output Pelo a GPIOE->ODR |= GPIO_ODR_ODR_11; // Output Pall b GPIOE->ODR |= GPIO_ODR_ODR_12; // Output PE12 C GPIOE-MODR |= GPIO_ODR_ODR_13; // Output PE13 d GPIOE-MODR &= -GPIO_ODR_ODR_14; // Output PE14 e GPIOE-MODR &= -GPIO_ODR_ODR_15; // Output PE15 E GPIOH->ODR = GPIO_ODR_ODR_0; // Output PH00 g } else if (set_Number == 4){ GPIOE-MODR &= -GPIO_ODR_ODR_10; // Output PE10 a GPIOE-MODR |= GPIO_ODR_ODR_11; // Output Pall b GPIOE->ODR 1= GPIO ODRODR_12; // Output PE12 C GPIOE->ODR &= -GPIO_ODR_ODR_13; // Output PE13 d GPIOE->ODR &= ~GPIO_ODR_ODR_14; // Output PE14 e GPIOE->ODR 1= GPIO_ODR_ODR_15; // Output PE15 f GPIOH->ODR |= GPIO_ODR_ODR_0; // Output PHO0 g IK 48 49 50 52 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 } else if (set_Number 5) { GPIOE->ODR |= GPIO_ODR_ODR_10; // Output PE10 a GPIOE->ODR &= -GPIO_ODR_ODR_11; // Output Pell b GPIOE->ODR 1= GPIO_ODR_ODR_12; // Output PE12 C GPIOE->ODR 1= GPIO_ODR_ODR_13; // Output P13 d GPIOE->ODR &= -GPIO_ODR_ODR_14; // Output PE14 e GPIOE->ODR 1= GPIO_ODR_ODR_15; // Output PE15 f GPIOH->ODR = GPIO_ODR_ODR_0; // Output PHO0 g } else if (set_Number == 0) { GPIOE->ODR 1= GPIO_ODR_ODR_10; // Output Pelo a GPIOE-MODR &= -GPIO_ODR_ODR_11; // Output Pell b GPIOE->ODR |= GPIO_ODR_ODR_12; // Output PE12 C GPIOE->ODR 1= GPIO_ODR_ODR_13; // Output PE13 d GPIOE->ODR 1= GPIO_ODR_ODR_14; // Output PE14 e GPIOE->ODR = GPIO_ODR_ODR_15; // Output PE15 E GPIOH->ODR = GPIO_ODR_ODR_0; // Output PH00 g } else if (set_Number == 7) { GPIOE->ODR 1= GPIO_ODR_ODR_10; // Output Pelo a GPIOE-MODR 1= GPIO_ODR_ODR_11; // Output Pell b GPIOE->ODR 1= GPIO_ODR_ODR_12; // Output PE12 C GPIOE->ODR &= -GPIO_ODR_ODR_13; // Output PE13 d GPIOE->ODR &= -GPIO_ODR_ODR_14; // Output PE14 e GPIOE->ODR &= -GPIO_ODR_ODR_15; // Output PE15 f GPIOH->ODR &= -GPIO_ODR_ODR_0; // Output PHO0 g } else if (set_Number 8){ GPIOE->ODR 1= GPIO_ODR_ODR_10; // Output Palo a GPIOE->ODR 1= GPIO_ODR_ODR_11; // Output Pell b GPIOE->ODR 1= GPIO_ODR_ODR_12; // Output PE12 C GPIOE->ODR 1= GPIO_ODR_ODR_13; // Output PE13 d GPIOE->ODR 1= GPIO_ODR_ODR_14; // Output PE14 e GPIOE-MODR 1= GPIO_ODR_ODR_15; // Output PE15 f GPIOH->ODR 1= GPIO_ODR_ODR_0; // Output PHO0 g } else if (set_Number 9) { GPIOE->ODR 1= GPIO_ODR_ODR_10; // Output PE10 a GPIOE->ODR 1= GPIO_ODR_ODR_11; // Output Pell b GPIOE->ODR 1= GPIO_ODR_ODR_12; // Output PE12 c GPIOE->ODR 1= GPIO_ODR_ODR_13; // Output PE13 d GPIOE->ODR &= -GPIO_ODR_ODR_14; // Output PE14 e GPIOE->ODR 1= GPIO_ODR_ODR_15; // Output PE15 f GPIOH->ODR 1= GPIO_ODR_ODR_0; // Output PH00 g } 93 94 int main(void) { RCC->CR = ((uint32_t) RCC_CR_HSION); //Enable High Speed Internal Clock (HSI = 16 MHz)) while ((RCC->CR & (uint32_t) RCC_CR_HSIRDY) 0) {;} //wait until HSI is ready RCC->CFGR &= (uint32_t) ((uint32_t) - (RCC_CFGR_SW)); //Select HSI as system clock source RCC->CFGR &= (uint32_t) RCC_CFGR_SW_HSI; //01:HSI16 oscillator used as system clock while ((RCC->CFGR && (uint32_t) RCC_CFGR_SWS)==0) {:} RCC->AHB2ENR 1= RCC_AHB2ENR_GPIOAEN; // Enable clock for GPIOA RCC->AHB2ENR 1= RCC_AHB2ENR_GPIOEEN; // Enable clock for GPIOE RCC->AHB2ENR 1= RCC_AHB2ENR_GPIOHEN; // Enable clock for GPIOH //PA3 GPIOA->MODER &= - (0x3 6); //clear mode bits GPIOA->PUPDR &= -(0x3 6); //clear pull up pull down GPIOA->PUPDR 1= 0x2 MODER &= -(Ox3 10); //clear mode bits GPIOA->PUPDR &= -(0x3 10); //clear pull up pull down GPIOA->PUPDR = 0x2 10; //set mode to pull down //PE10 set to segment a GPIOE->MODER &= -(0x300000 MODER [= Ox100000 ); //set mode to output //Ell set to segment b GPIOE->MODER &= *(0x300000 2); //clear mode bits GPIOE->MODER = Ox100000 MODER &= -(0x300000 MODER [= Ox100000 4; //set mode to output //PE13 set to segment d GPIOE->MODER &= -(Ox300000 MODER [= Ox100000 MODER &= -(Ox300000 MODER = Ox100000 MODER &= -(Ox3 30); //clear mode bits GPIOE->MODER [= Oxl 30; //set mode to output //El set to segment g GPIOH->MODER &= a (x3); //clear mode bits GPIOH->MODER 1= Oxl; //set mode to output //Dead loop & program hangs here while (1) int set_Number = 0; int time Counter = 0; int joy_Up = 0; int joy_Down 0; int previous_Counter = 0; int interval = 20000; while() { ++time_Counter; set_Display (set_Number); 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 joy_Up = GPIOA->IDR & GPIO_IDR_IDR_3; //Gets input from PE3 and sets it to joy_Up joy_Down = GPIOA->IDR & GPIO_IDR_IDR_5; //Gets input from PES and sets it to joy_Down if(time_Counter previous_Counter > interval) { previous_Counter = time_Counter; THE if(joy_Up > 0) { ++set_Number; } if(joy_Down > 0) { --set_Number; } if (set_Number > 9) { set_Number = 0; } U if (set_NumberStep by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started