工具与软件:
您好!
我正在使用 MSPM0C1104、只有一个 UART 可用、因此我需要制作 GPIO SW UART。 对于该计时器中断、使用 GPIO UART、因为 GPIO 引脚是异步的。 现在、在同一个项目中、软件 GPIO UART 和 UART0已经可用。
现在、我对 Uart0使用轮询方法、对 SW UART 使用计时器中断。 但在 while 循环中、如果两个 UART 都处于活动状态、则硬件 UART 工作、而 SW GPIO UART 仅在 while 循环中没有其他代码时工作。
您能否解释一下如何继续执行此操作、并在 while 循环中将数据发送到两个 UART。
int main (空)
{
SYSCFG_DL_init ();
/*
*如果 SW 为开路、则关闭 LED;如果 SW 为闭合、则打开 LED。
*默认情况下 LED 会关闭。
*/
NVIC_EnableIRQ (GPIO_UART_INT_IRQN);
NVIC_EnableIRQ (TIMER_0_INST_INT_IRQN);
currentState = RX_STATE;
TX_DATA_buff = 0x21;
SEND_FLAG = 0;
unsigned char arr[]={0x11、0x22、0x77、0x44、0x66、0x88、0x77、0x77、0x76、0x76、0x76};//OpenLid;
while (1){
__ WFI ();
if (send_FLAG ==1)
{
tempByte = TX_DATA_buff << 1;//存储数据字节并添加起始位
tempByte >= 0x0200;//添加停止位
SEND_FLAG = 0;
DL_GPIO_setPins (GPIO_UART_PORT、GPIO_UART_SW_TX_PIN);
DL_GPIO_initDigitalOutputFeatures (GPIO_UART_SW_TX_IOMUX、
DL_GPIO_INVERRITY_DISABLE、DL_GPIO_resistor_pull_up、
DL_GPIO_DRIVE_STRENGTING_LOW、DL_GPIO_HIZ_DISABLE);
DL_GPIO_enableOutput (GPIO_UART_PORT、GPIO_UART_SW_TX_PIN);
Timer_init();
currentState = TX_STATE;
}
否则{
unsigned char arr[]={0x11、0x22、0x77、0x44、0x66、0x88、0x77、0x77、0x76、0x76、0x76};//OpenLid;
uart_packet_size = sizeof (arr)/ sizeof (arr[0]);
UART_Write_Buffer (arr、UART_packet_size); //此函数用于将数据发送到工作正常的 UART。
DL_GPIO_togglePins (GPIO_LEDS_PORT、
GPIO_LEDS_USER_LED_1_PIN | GPIO_LEDS_USER_TEST_PIN);
}
delay_cycles (1200000);
}
}
其他情况下才正常工作。 如果我注释 else 条件、则仅当条件 SW UART 正在发送数据时。
如何进行此操作????
