Update repo

This commit is contained in:
hangpersonal committed 2026-09-04 23:55:42 -07:00
1 parent ce65a0f59a
commit ce1a3b44ad
4 files changed
+44 -274

No files matched your search

+43 -52
View File
@@ -34,6 +34,11 @@
#include "uart_drv.h"
#include "sci.h"
#define LED_R 41U // Red LED
#define LED_B 58U // Blue LED
#define SCI_RXDA_PIN 85U
#define SCI_TXDA_PIN 84U
// --------------------------------------------------------------------
@@ -61,9 +66,9 @@ uint8_t ucHeap[configTOTAL_HEAP_SIZE];
#endif
// UART stdout redirection configuration related functions
int uart_count;
void UartSetup(void);
void UartPutChar(uint16_t charToWrite);
extern int checkPrintf(void);
// --------------------------------------------------------------------
@@ -71,11 +76,13 @@ extern int checkPrintf(void);
void configCPUTimer(uint32_t cpuTimer, uint32_t period_us);
__interrupt void timer1_ISR(void);
// --------------------------------------------------------------------
void LED_TaskRed(void * pvParameters);
void LED_TaskBlue(void * pvParameters);
static SemaphoreHandle_t xSemaphore = NULL;
// --------------------------------------------------------------------
void main(void)
{
@@ -89,13 +96,13 @@ void main(void)
Device_initGPIO();
GPIO_setPadConfig(DEVICE_GPIO_PIN_LED1, GPIO_PIN_TYPE_STD);
GPIO_setDirectionMode(DEVICE_GPIO_PIN_LED1, GPIO_DIR_MODE_OUT);
GPIO_writePin(DEVICE_GPIO_PIN_LED1, 0);
GPIO_setPadConfig(LED_R, GPIO_PIN_TYPE_STD);
GPIO_setDirectionMode(LED_R, GPIO_DIR_MODE_OUT);
GPIO_writePin(LED_R, 0);
GPIO_setPadConfig(DEVICE_GPIO_PIN_LED2, GPIO_PIN_TYPE_STD);
GPIO_setDirectionMode(DEVICE_GPIO_PIN_LED2, GPIO_DIR_MODE_OUT);
GPIO_writePin(DEVICE_GPIO_PIN_LED2, 0);
GPIO_setPadConfig(LED_B, GPIO_PIN_TYPE_STD);
GPIO_setDirectionMode(LED_B, GPIO_DIR_MODE_OUT);
GPIO_writePin(LED_B, 0);
// ------------------------------------------------------------------------
@@ -154,29 +161,6 @@ void main(void)
// Assign stdout to be a UART device
assert(freopen("uart:", "w", stdout) != NULL);
// printf() tests
checkPrintf();
// Ptr string = Hello world!
// printf test
// (null) is null pointer
// 5 = 5
// 129 = - max int
// char a = 'a'
// hex ff = ff
// hex 00 = 00
// signed -3 = unsigned 65533 = hex fffd
// 0 message(s)
// 0 message(s) with %
// justif: "left "
// justif: " right"
// 3: 0003 zero padded
// 3: 3 left justif.
// 3: 3 right justif.
// -3: -003 zero padded
// -3: -3 left justif.
// -3: -3 right justif.
// ------------------------------- FreeRTOS -------------------------------
xSemaphore = xSemaphoreCreateBinary();
@@ -219,7 +203,9 @@ void LED_TaskRed(void * pvParameters) {
while(1) {
if(xSemaphoreTake(xSemaphore, portMAX_DELAY) == pdTRUE) {
// Toggle red LED
GPIO_togglePin(DEVICE_GPIO_PIN_LED1);
GPIO_togglePin(LED_R);
uart_count++;
printf("Hello from FreeRTOS running on the F28377S Coreboard, %d!\r\n", uart_count);
}
}
}
@@ -232,8 +218,8 @@ void LED_TaskRed(void * pvParameters) {
void LED_TaskBlue(void * pvParameters) {
while(1) {
// Toggle blue LED
GPIO_togglePin(DEVICE_GPIO_PIN_LED2);
vTaskDelay(500 / portTICK_PERIOD_MS);
GPIO_togglePin(LED_B);
vTaskDelay(500);
}
}
@@ -288,37 +274,42 @@ __interrupt void timer1_ISR(void) {
// UartSetup - Configures SCIA
void UartSetup(void) {
// DEVICE_GPIO_PIN_SCIRXDA is the SCI Rx pin
GPIO_setMasterCore(DEVICE_GPIO_PIN_SCIRXDA, GPIO_CORE_CPU1);
GPIO_setPinConfig(DEVICE_GPIO_CFG_SCIRXDA);
GPIO_setDirectionMode(DEVICE_GPIO_PIN_SCIRXDA, GPIO_DIR_MODE_IN);
GPIO_setPadConfig(DEVICE_GPIO_PIN_SCIRXDA, GPIO_PIN_TYPE_STD);
GPIO_setQualificationMode(DEVICE_GPIO_PIN_SCIRXDA, GPIO_QUAL_ASYNC);
// SCIA RX: GPIO85
GPIO_setMasterCore(SCI_RXDA_PIN, GPIO_CORE_CPU1);
GPIO_setPinConfig(GPIO_85_SCIRXDA);
GPIO_setDirectionMode(SCI_RXDA_PIN, GPIO_DIR_MODE_IN);
GPIO_setPadConfig(SCI_RXDA_PIN, GPIO_PIN_TYPE_STD);
GPIO_setQualificationMode(SCI_RXDA_PIN, GPIO_QUAL_ASYNC);
// DEVICE_GPIO_PIN_SCITXDA is the SCI Tx pin
GPIO_setMasterCore(DEVICE_GPIO_PIN_SCITXDA, GPIO_CORE_CPU1);
GPIO_setPinConfig(DEVICE_GPIO_CFG_SCITXDA);
GPIO_setDirectionMode(DEVICE_GPIO_PIN_SCITXDA, GPIO_DIR_MODE_OUT);
GPIO_setPadConfig(DEVICE_GPIO_PIN_SCITXDA, GPIO_PIN_TYPE_STD);
GPIO_setQualificationMode(DEVICE_GPIO_PIN_SCITXDA, GPIO_QUAL_ASYNC);
// SCIA TX: GPIO84
GPIO_setMasterCore(SCI_TXDA_PIN, GPIO_CORE_CPU1);
GPIO_setPinConfig(GPIO_84_SCITXDA);
GPIO_setDirectionMode(SCI_TXDA_PIN, GPIO_DIR_MODE_OUT);
GPIO_setPadConfig(SCI_TXDA_PIN, GPIO_PIN_TYPE_STD);
GPIO_setQualificationMode(SCI_TXDA_PIN, GPIO_QUAL_ASYNC);
// Initialize SCIA and its FIFO
// Configure SCIA
SCI_performSoftwareReset(SCIA_BASE);
// Configure SCIA with FIFO
SCI_setConfig(SCIA_BASE, DEVICE_LSPCLK_FREQ, 9600, (SCI_CONFIG_WLEN_8 |
SCI_CONFIG_STOP_ONE |
SCI_CONFIG_PAR_NONE));
SCI_setConfig(SCIA_BASE,
DEVICE_LSPCLK_FREQ,
115200U,
SCI_CONFIG_WLEN_8 |
SCI_CONFIG_STOP_ONE |
SCI_CONFIG_PAR_NONE);
SCI_resetChannels(SCIA_BASE);
SCI_resetRxFIFO(SCIA_BASE);
SCI_resetTxFIFO(SCIA_BASE);
// Recommended when using FIFO
SCI_clearInterruptStatus(SCIA_BASE, SCI_INT_TXFF | SCI_INT_RXFF);
SCI_enableFIFO(SCIA_BASE);
SCI_enableModule(SCIA_BASE);
SCI_performSoftwareReset(SCIA_BASE);
}
// UartPutChar - Implements SCI based putchar()
void UartPutChar(uint16_t charToWrite) {
SCI_writeCharBlockingFIFO(SCIA_BASE, charToWrite);