You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

75 lines
1.6 KiB
C

#include <stdint.h> // C99 standard integers
#include "tm4c.h" // the same as "lm4f120h5qr.h" in the video
#include "delay.h"
#define LED_RED (1U << 1)
#define LED_BLUE (1U << 2)
#define LED_GREEN (1U << 3)
uint8_t u8a, u8b;
uint16_t u16c, u16d;
uint32_t u32e, u32f;
int8_t s8;
int16_t s16;
int32_t s32;
int main(void) {
u8a = sizeof(u8a);
u16c = sizeof(uint16_t);
u32e = sizeof(uint32_t);
u8a = 0xa1U;
u16c = 0xc1c2U;
u32e = 0xe1e2e3e4U;
u8b = u8a;
u16d = u16c;
u32f = u32e;
u16c = 40000U;
u16d = 30000U;
//u32e = u16c + u16d; // NOT portable!
u32e = (uint32_t)u16c + u16d;
u16c = 100U;
//s32 = 10 - u16c; // NOT portable!
//s32 = 10 - (int16_t)u16c; // INCORRECT: unintended sign extension
s32 = 10 - (int32_t)u16c;
//if (u32e > -1) { // ALWAYS false!
if ((int32_t)u32e > -1) {
u8a = 1U;
}
else {
u8a = 0U;
}
u8a = 0xffU;
//if (~u8a == 0x00U) { // ALWAYS false!
if ((uint8_t)(~u8a) == 0x00U) {
u8b = 1U;
}
SYSCTL_GPIOHBCTL_R |= (1U << 5); /* enable AHB for GPIOF */
SYSCTL_RCGCGPIO_R |= (1U << 5); /* enable clock for GPIOF */
GPIO_PORTF_AHB_DIR_R |= (LED_RED | LED_BLUE | LED_GREEN);
GPIO_PORTF_AHB_DEN_R |= (LED_RED | LED_BLUE | LED_GREEN);
/* turn all LEDs off */
GPIO_PORTF_AHB_DATA_BITS_R[LED_RED | LED_BLUE | LED_GREEN] = 0U;
while (1) {
GPIO_PORTF_AHB_DATA_BITS_R[LED_RED] = LED_RED;
delay(500000);
GPIO_PORTF_AHB_DATA_BITS_R[LED_RED] = 0;
delay(500000);
}
//return 0; // unreachable code
}