int USART_PRINTF_FLAG = 2;//默认串口2 //改写fputc int fputc(int ch, FILE *f) { if (USART_PRINTF_FLAG == 2) { while(USART_GetFlagStatus(USART2,USART_FLAG_TC)==RESET); USART_SendData(USART2,(uint8_t)ch); } else { while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET); ...
在串口中断函数用用printf函数打印后发现只收到了一个字节数据(应该是16字节数据),串口中断代码如下: void DEBUG_USART_IRQHandler(void) { HAL_UART_Receive(&UartHandle, (uint8_t *)UART1_RxBuff, 2, 400); __HAL_UART_ENABLE_IT(&UartHandle,UART_IT_RXNE); printf("%d %d %d\r\n", UART1_...
uint8_t data[10];uint16_t len;int main( void ){ Init();USART1_Init(38400);while( 1 ){...
USART_SendChar(USART1, (uint8_t)ch); return ch; } 注意:需要包含头文件stdio.h,否则FILE类型未定义。 勾选了Use MicroLib选项,重定向fputc()函数后,我们就可以在工程代码中使用printf()函数了: int main(void) { USART_Configuration(); printf(" stm32f103rct6 "); printf(" Cortex-M3 "); while (...
USART_SendChar(USART1, (uint8_t)ch); returnch; } 3. 重写fgetc方法 同样的 /* ** Rewrite fgetc function and make scanf function work **/ intfgetc(FILE* file) { while((USART1->ISR & UART_IT_RXNE) == RESET); returnUSART1->RDR; ...
USART_SendData(USART3, (uint8_t)ch); while (USART_GetFlagStatus(USART3, USART_FLAG_TXE) == RESET); return ch; } 1. 2. 3. 4. 5. 6. 7. 8. 9. 在这个示例中,fputc函数会重定向到 USART3,并且通过调用USART_SendData函数发送一个字节到 USART3,然后等待发送完成。
USART1->TDR=(uint8_t)ch; 最后实现fputc函数就变的非常简单了,这里我放在usart.c文件的末尾: 代码语言:javascript 代码运行次数:0 运行 AI代码解释 /* USER CODE BEGIN 1 */#if1#include<stdio.h>intfputc(int ch,FILE*stream){/* 堵塞判断串口是否发送完成 */while((USART1->ISR&0X40)==0);/* ...
程序调完以后我们可能不希望再打印调试信息,这个时候可以写一个条件编译,让printf失效。 #define LOG 1 int fputc(int ch, FILE *f) { #if LOG USART_SendData( USART1, (uint8_t)ch ); while(USART_Ge
/* 发送一个帧数据,同时接收一个帧数据 */uint8_tSPI_SendData(uint8_tdata){uint16_ttimeout=0x2710;//10,000while(SPI_I2S_GetFlagStatus(SPIx, SPI_I2S_FLAG_TXE)==RESET)//寄存器的状态读取可以随时就行,这个不受SPI是否在传输数据的影响if((timeout--)==0...
1、使用printf语句通过串口输出我们想要的参数值 具体的用法:使用之前必须包含相应的头文件#include < stdio.h > int fputc(int ch, FILE *f)//重定向,让printf输出到串口 { USART_SendData(USART1, (uint8_t) ch); while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET); ...