USART_SendData(USART1,TxBuf1[i]); GPIO_SetBits(GPIOB,GPIO_Pin_5); //等待数据发送完毕 while(USART_GetFlagStatus(USART1, USART_FLAG_TC)==RESET); GPIO_ResetBits(GPIOB,GPIO_Pin_5); } while(1); } //RCC时钟配置 void RCC_cfg() { //定义错误状态变量 ErrorStatus HSEStartUpStatus; //...
二、USART_FLAG_TXE和USART_FLAG_TC怎么用这里主要说的是在特殊情况下发送字符软件代码的写法:特殊情况指的是:1)调用发送字符串函数“发送完”本机立即掉电;2)调用发送字符串函数“发送完”从机立即掉电;【上面两种主要用于芯片对电源控制的项目中】3)调用发送字符串函数“发送完”立刻进入待机或停机。主要说的是...
(USART1->SR & USART_FLAG_TC));这句是等待数据完完全全从“发送移位寄存器”中发送出去,while (!(USART1->SR & USART_FLAG_TXE));这句是等待数据从USARTx->DR转移到“发送移位寄存器”中。在后一句的写法中,并不需等待数据完全发送,只需要USARTx->DR里面的数据已经被转移走,就可以马上进行...
voidSend_data(u8*s){while(*s!='\0'){while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET);USART_SendData(USART1,*s);s++;}} 以上程序的形参就是我们调用该函数时要发送的字符串,这里通过循环调用USART_SendData来一 一发送我们的字符串。 while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==R...
初始化 GPIO,并将 GPIO 复用到 USART 上 配置 USART 参数 配置中断控制器并使能 USART 接收中断 使能...
这个是芯片外设的标准定义。根据传入参数结构体指针USARTx,取出其SR成员,并判定发送完成标志性什么情况。只要发送完成标志位没有置位就死等。这行语句是跟着上一行向发送缓冲寄存器写数据之后的,查询法查询发送完成标志。当一个字节发送完成后,TC标志置位,这个循环才会退出。
USART_GetFlagStatus(USART1, USART_FLAG_RXNE); 要判断发送是否成(T完C),操作库函数的方法是: USART_GetFlagStatus(USART1, USART_FLAG_TC); 以上这些标识号在 MDK 里面是通过宏定义定义的: 1 #define USART_IT_PE ((uint16_t)0x0028) 2 #define USART_IT_TXE ((uint16_t)0x0727) ...
while(USART_GetFlagStatus(USART1,USART_FLAG_TC )==RESET); 这句话有必要加,它是用于检查串口是否发送完成的标志,如果不加这句话会发生数据丢失的情况。这个函数只能用于串口1发送。有些时候根据需要,要用到多个串口发送,那么就还需要改进这个程序。如下: ...
while( USART_GetFlagStatus(USART1,USART_FLAG_TC)!= SET); return (ch); } 当只开串口1时,printf()可以正常使用,但是同时使用串口1和串口2时,使用printf()就会输出不了信息,并且程序无法往下执行。若不用printf()函数,而直接使用USART_SendData(USART1,(unsigned char)ch)时,串口1也能正常打印。
__HAL_UART_ENABLE_IT(&I_huart2, UART_IT_TC); //发送完成中断 //08-开启DMA接收 HAL_DMA_Start(&hdma_usart2_rx,(uint32_t)&USART2->DR,(uint32_t)u8rxbuff,BUFFMAX); SET_BIT(I_huart2.Instance->CR3, USART_CR3_DMAR);//USART2请求 DMA启动 ...