[ ST NUCLEO-U575ZI-Q 测评]+ 以指令方式控制LED灯
[复制链接]
本帖最后由 jinglixixi 于 2023-1-4 08:45 编辑
为了给后续的设计的检查,先测试一下以指令方式控制LED灯。
开发板上有红绿蓝3个LED灯,为控制它们的亮灭,这里也为它们分配了3个指令,并存放在数组中,其指令内容如下:
uint8_t aTxBuffer1[] = {0x74,0x31,0xff,0xff,0xff};
uint8_t aTxBuffer2[] = {0x74,0x32,0xff,0xff,0xff};
uint8_t aTxBuffer3[] = {0x74,0x33,0xff,0xff,0xff};
接收的指令也被存放到数组中,其定义为:
uint8_t aRxBuffer[5];
其控制的主程序如下:
int main(void)
{
HAL_Init();
SystemClock_Config();
SystemPower_Config();
MX_GPIO_Init();
MX_ICACHE_Init();
MX_USART2_UART_Init();
BSP_LED_Init(LED1);
BSP_LED_Init(LED2);
BSP_LED_Init(LED3);
BSP_LED_Off(LED1);
BSP_LED_Off(LED2);
BSP_LED_Off(LED3);
while (1)
{
HAL_UART_Receive(&huart2, (uint8_t *)aRxBuffer, 5, 5000);
if (Buffercmp((uint8_t *)aTxBuffer1, (uint8_t *)aRxBuffer, 5)==0)
{
BSP_LED_On(LED1);
BSP_LED_Off(LED2);
BSP_LED_Off(LED3);
}
if (Buffercmp((uint8_t *)aTxBuffer2, (uint8_t *)aRxBuffer, 5)==0)
{
BSP_LED_On(LED2);
BSP_LED_Off(LED1);
BSP_LED_Off(LED3);
}
if (Buffercmp((uint8_t *)aTxBuffer3, (uint8_t *)aRxBuffer, 5)==0)
{
BSP_LED_On(LED3);
BSP_LED_Off(LED1);
BSP_LED_Off(LED2);
}
aRxBuffer[1] = 0x30;
}
}
经程序的编译下载,即可提供串口调试工具来向开发板发送指令,其界面如图1所示。
图1 发送指令
相应的控制效果如图2至图4所示,其中t1指令用来点亮绿色LED,t2指令用来点亮蓝色LED,t3指令用来点亮红色LED。
图2 点亮LED1
图3 点亮LED2
图4 点亮LED3
|