Answered step by step
Verified Expert Solution
Link Copied!

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.

image text in transcribedimage text in transcribedimage text in transcribedimage text in transcribed

#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_Number

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image_2

Step: 3

blur-text-image_3

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Formal SQL Tuning For Oracle Databases Practical Efficiency Efficient Practice

Authors: Leonid Nossov ,Hanno Ernst ,Victor Chupis

1st Edition

3662570564, 978-3662570562

More Books

Students also viewed these Databases questions