EECE237 Spring 2016
Homework #3 due on 5/1 (Sun)
LCE_Hello .c controls multiple I/O ports, GPIOA & E being two of them. Study the program carefully. We will get into each of these I/O ports one by one for the rest of the semester. This homework is to enhance the understanding on how the program configures and controls GPIOE for the LED's and GPIOA for the pushbutton, and on how the program configures and controls I2C for the LCD panel display. Answer the questions below. L stands for the line number in the program. Type your answers and submit your work to BB Learner.
Hint:
a)
Place LED_Hello.c inside STM32F3_Base project. Run uVision.
b)
Following each question of the homework, right click on the relevant system defined functions and the variables, and find the answers. If necessary, multiple linking may be necessary.
c)
It is acceptable to copy and paste the answers from the program.
(Total 80 points)
1.
GPIO_InitTypeDef (L15)
(5 points)
a.
Name the file and the line number, or the range of numbers, in that file where this structure type is defined.
b.
List the names of the members in the structure.
2.
GPIOE (L57)
(5 points)
a.
Name the file and the line number in that file where GPIOE is defined.
b.
What is its offset address of ODR variable from AHB3PERIPH_BASE in hex number?
c.
What is a variable type of GPIOE?
3.
GPIO_Init (
) (L102)
(5 points)
a.
Name the file and the line number in that file where this function
is defined.
b.
Read the block comment in the file where the function is defined.
What does this function do?
4.
RCC_AHBPeriphClockCmd
(RCC_AHBPeriph_GPIOE, ENABLE) (L93) (5 points)
a.
Name the file and the line number, or the range of numbers, in that file where this function
is defined.
b. What is the hexadecimal number of RCC_AHBPeriph_GPIOE and where to find it?
c.
What does this function perform? Read the block comment in the file where the function is defined.
5.
Based on what you have observed, answer the following questions (20 points)
a.
What is the C code(s) to set RCCAHBENR for GPIOE?
b.
What is the C code(s) to set MODER in GPIOA input for pin[0]?
c.
What is the C code(s) to set MODER in GPIOE output for all pins?
d.
What is the C code(s) to write a LED pattern of 0xff00 on ODR?
1.
I2C_InitTypeDef (L140)
(5 points)
a.
Name the file and the line number, or the range of numbers, in that file where this structure type is defined.
b.
List the names of the members in the structure.
2.
RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C2, ENABLE);
(L144) (5 points)
a. Name the file and the line number, or the range of numbers, in that file where this function
is defined.
b. What is the hexadecimal number of RCC_APB1Periph_I2C2 and where to find it?
c.
What does this function perform? Read the block comment above the file where the function is defined.
3.
I2C_Cmd(I2C2, ENABLE); (L169) (5 points)
a.
Name the file and the line number, or the rang.
EECE237 Spring 2016Homework #3 due on 51 (Sun)LCE_Hello .c .docx
1. EECE237 Spring 2016
Homework #3 due on 5/1 (Sun)
LCE_Hello .c controls multiple I/O ports, GPIOA & E being
two of them. Study the program carefully. We will get into each
of these I/O ports one by one for the rest of the semester. This
homework is to enhance the understanding on how the program
configures and controls GPIOE for the LED's and GPIOA for
the pushbutton, and on how the program configures and controls
I2C for the LCD panel display. Answer the questions below. L
stands for the line number in the program. Type your answers
and submit your work to BB Learner.
Hint:
a)
Place LED_Hello.c inside STM32F3_Base project. Run uVision.
b)
Following each question of the homework, right click on the
relevant system defined functions and the variables, and find
the answers. If necessary, multiple linking may be necessary.
c)
It is acceptable to copy and paste the answers from the program.
(Total 80 points)
1.
GPIO_InitTypeDef (L15)
(5 points)
a.
2. Name the file and the line number, or the range of numbers, in
that file where this structure type is defined.
b.
List the names of the members in the structure.
2.
GPIOE (L57)
(5 points)
a.
Name the file and the line number in that file where GPIOE is
defined.
b.
What is its offset address of ODR variable from
AHB3PERIPH_BASE in hex number?
c.
What is a variable type of GPIOE?
3.
GPIO_Init (
3. ) (L102)
(5 points)
a.
Name the file and the line number in that file where this
function
is defined.
b.
Read the block comment in the file where the function is
defined.
What does this function do?
4.
RCC_AHBPeriphClockCmd
(RCC_AHBPeriph_GPIOE, ENABLE) (L93) (5 points)
a.
Name the file and the line number, or the range of numbers, in
that file where this function
is defined.
b. What is the hexadecimal number of RCC_AHBPeriph_GPIOE
and where to find it?
c.
4. What does this function perform? Read the block comment in
the file where the function is defined.
5.
Based on what you have observed, answer the following
questions (20 points)
a.
What is the C code(s) to set RCCAHBENR for GPIOE?
b.
What is the C code(s) to set MODER in GPIOA input for
pin[0]?
c.
What is the C code(s) to set MODER in GPIOE output for all
pins?
d.
What is the C code(s) to write a LED pattern of 0xff00 on
ODR?
1.
5. I2C_InitTypeDef (L140)
(5 points)
a.
Name the file and the line number, or the range of numbers, in
that file where this structure type is defined.
b.
List the names of the members in the structure.
2.
RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C2,
ENABLE);
(L144) (5 points)
a. Name the file and the line number, or the range of numbers,
in that file where this function
is defined.
b. What is the hexadecimal number of RCC_APB1Periph_I2C2
and where to find it?
c.
What does this function perform? Read the block comment
above the file where the function is defined.
6. 3.
I2C_Cmd(I2C2, ENABLE); (L169) (5 points)
a.
Name the file and the line number, or the range of numbers, in
that file where this function
is defined.
b. What variable does it enable?
c.
What does this function perform? Read the block comment
above the file where the function is defined.
4.
I2C_Init(I2C2, &I2C_InitStructure);
(L168) (5 points)
a.
Name the file and the line number, or the range of numbers, in
that file where this function
is defined.
b.
What does this function perform? Read the block comment
7. above the file where the function is defined.
5.
I2C_TransferHandling(I2C2, 0x50 , 3, I2C_SoftEnd_Mode,
I2C_Generate_Start_Write); (L177) (5 points)
a.
Name the file and the line number, or the range of numbers, in
that file where this function
is defined.
b. What does
0x50 mean? What is it?
c.
What does this function perform? Read the block comment
above the file where the function is defined.
6.
I2C_GetFlagStatus(I2C2, I2C_ISR_TXIS) (L179) (5 points)
a.
Name the file and the line number, or the range of numbers, in
that file where this function
is defined.
8. b. What flag status does this function get?
c.
What does this function perform? Read the block comment
above the file where the function is defined.
7.
I2C_SendData(I2C2, 0xFE)
(L181) (5 points)
a.
Name the file and the line number, or the range of numbers, in
that file where this function
is defined.
b. To what register is 0xFE written?
c.
What does this function perform? Read the block comment
above the file where the function is defined.
8.
Based on what you have observed, What is the C code(s) to set
RCCAPB1ENR for I2C2?