AI代码解释 RCC->CFGR|=(uint32_t)(RCC_CFGR_PLLSRC_HSE|RCC_CFGR_PLLMULL9); 倍频系数由9修改为6,因为STM32F103主频最高到72MHz,外部晶振改为12M后,所以倍频系数改为6 代码语言:javascript 代码运行次数:0 运行 AI代码解释 RCC->CFGR|=(uint32_t)(RCC_CFGR_PLLSRC_HSE|RCC_CFGR_PLLMULL6); 如下图...
{/*Place your implementation of fputc here*//*e.g. write a character to the USART*/USART_SendData(USART1, (uint8_t) ch);/*Loop until the end of transmission*/while(USART_GetFlagStatus(USART1, USART_FLAG_TC) ==RESET);returnch; } 因printf()之类的函数,使用了半主机模式。使用标准库会...
uint16_tmask; uint16_thead; uint16_ttail; queue_element_tdata[0]; }queue_t; staticinlinequeue_t*queue_create(uint16_t_size) { if(_size & (_size -1)) _size =256; queue_t* q =malloc(sizeof(queue_t) + _size *sizeof(queue_element_t)); if(q) { q->mask = _size -1;...
printf最底层其实调用的是fputc,所以可以重新定义fputc函数,使得其用串口输出,这个过程就叫重定向。这里的原理是不同库的函数可以重名。我们把重定向用的函数放在指定的区域,如下所示。 /* USER CODE BEGIN 4 */ int fputc(int ch, FILE *f) { HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 1000)...
15. HAL_UART_Transmit(&huart5, (uint8_t *)&ch, 1, 0xFFFF); //调用STM32的HAL库,...
uint16_t mask;uint16_t head;uint16_t tail;queue_element_t data[0];} queue_t;static inline queue_t* queue_create(uint16_t _size){ if (_size & (_size - 1))_size = 256;queue_t* q = malloc(sizeof(queue_t) + _size * sizeof(queue_element_t));if (q){ q->mask = _...
exit()以避免使用半主机模式 _sys_exit(int x) { x = x; } //重定义fputc函数 int fputc(int ch, FILE *f){ // 将这里的 USART1修改为USART2或USART3,即可实现printf函数输出到指定串口 while((USART1->SR&0X40)==0);//循环发送直到发送完毕 USART1->DR = (uint8_t) ch; ...
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来通过串口打印调试信息,但这个函数是不可以直接使用的,必须做点对库函数的改动。 STM32M CUBE是ST官方提供的库以及初始化工具,很好很强大,但是在UART方面值提供了如下函数: HAL_StatusTypeDefHAL_UART_Transmit(UART_HandleTypeDef*huart,uint8_t*pData,uint16_tSize,uint32_...
STM32开发中常用的C语言知识-printf是格式化输出函数,它可以直接打印十进制,八进制,十六进制,输出控制符分别为%d, %o, %x, 但是它不存在二进制,如果输出二进制,可以手写,但是也可以调用stdlib.h里面的itoa函数,他不是标准库里面的函数,但是大多数编译器里面都有这