void UART1_Isr() interrupt 4 { uint8 res; static uint8 dwon_count; if(UART1_GET_TX_FLAG) { UART1_CLEAR_TX_FLAG; busy[1] = 0; } if(UART1_GET_RX_FLAG) { UART1_CLEAR_RX_FLAG; res = SBUF; //ウフミヤカッマツヤリ if(res == 0x7F) { if(dwon_count++ > 20) IAP_CONTR = 0x60; } else { dwon_count = 0; } } }
时间: 2023-12-06 10:43:48 浏览: 45
这段代码是一个UART1的中断服务函数,当UART1发送或接收到数据时,会触发中断,执行该函数。
函数中有一个变量dwon_count,用于记录连续接收到0x7F字符的次数,当连续接收到20次以上时,会执行IAP_CONTR = 0x60,即进入ISP模式,用于升级程序。这是一种防止程序升级失败的机制。
另外,当UART1发送完成时,busy[1]会被置为0,表示UART1可以继续发送数据。
相关问题
void UART_Open(UART0_Type *uart, uint32_t baudrate, uint8_t parityoption, uint8_t rxinttriggerlevel)
根据提供的引用内容,您提到了一个函数`void UART_Open(UART0_Type *uart, uint32_t baudrate, uint8_t parityoption, uint8_t rxinttriggerlevel)`。这个函数的作用是打开UART串口,并设置波特率、奇偶校验选项和接收中断触发级别。
下面是一个示例代码,演示了如何使用`UART_Open`函数:
```c
UART0_Type uart0;
uint32_t baudrate = 9600;
uint8_t parityoption = 0; // 0表示无奇偶校验
uint8_t rxinttriggerlevel = 1; // 接收中断触发级别为1
UART_Open(&uart0, baudrate, parityoption, rxinttriggerlevel);
```
请注意,示例代码中的`UART0_Type`是一个自定义的数据类型,您需要根据您的具体情况进行替换。
void BL0942_Uart1_W(uint8_t *pData,uint32_t Timeout)
这是一个函数的声明,函数名为BL0942_Uart1_W。它接受两个参数:一个指向uint8_t类型的数据的指针pData,和一个表示超时时间的Timeout参数,数据类型为uint32_t。函数没有返回值(void)。
根据函数名和参数类型,它可能是用于向某个设备通过UART1接口发送数据的函数。具体的实现逻辑需要查看函数定义的代码。