历史上的今天
今天是:2025年01月26日(星期日)
2019年01月26日 | STM32->UART
2019-01-26 来源:eefocus
在使用STM32过程中,可能会因为没有定义好调试工具的连接管脚,例如JTAG和SW需要的管脚被程序重新初始化复用了,然后就没法调试变砖了,此时可以通过ISP的方式擦写flash,或者跳线重启,进入BootLoader模式用JLink下载新的程序或直接擦除MCU的flash,再把跳线改回来重启。
通过串口printf打印输出,添加C语言标准库文件:
#include "stdio.h"
根据编译器定义改写相关函数
#ifdef __GNUC__
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif /* __GNUC__ */
根据自己的串口收发改写相应的函数:
int fputc(int ch, FILE *f)
{
USART1->DR=(uint8_t)ch;
while((USART1->SR&0X40)==0);
return ch;
}
int fputc(int ch, FILE *f)
{
Write_Usart1_C((uint8_t) ch);
return(ch);
}
int fgetc(FILE *f)
{
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
{
return (USART_ReceiveData(USART1));
}
}
如果使用HAL库:
int fputc(int ch, FILE *f)
{
HAL_UART_Transmit(&huart1 ,(uint8_t *)&ch, 1, 0xFFFF);
return ch;
}
然后就可以使用C语言的标准输出:printf(" test good! \n");
在C99中printf原型:
int __cdecl printf(const char * __restrict__ _Format,...)
在使用标准库和C99环境下,单纯改写fputc还不行,还需要:
struct __FILE { int handle; /* Add whatever you need here */ };
FILE __stdout;
FILE __stdin;
缺少这个定义,编译会通过,但在程序跑起来调用printf()会直接死机,可能的原因是程序中有操作或定义过FILE指向,printf无法接受一个指向FILE的正确指针对象。修改后,应用中没有加#pragma import(__use_no_semihosting)也可以跑起来。
在STM32中,初始化TX输出模式:
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
下一篇:STM32->RTC
史海拾趣
|
嘿 各位: 现在我想在WINCE6.0下面做一个电话与IE共存的软件,想要做到当如果在下载数据或是浏览网页的时候有电话打进来需要挂住数据通道,电话接完后可以很快的浏览网页或是下载数据,以前我采用的方式是RAS函数库+AT指令方式,当想 ...… 查看全部问答> |
|
{ ...... // 启动线程,开始播放声音, 并将线程的优先权设置为最高,希望它立即去执行 HANDLE m_hThread = CreateThread(NULL, 0, TOPlaySoundThread, NULL, 0, NULL); SetThreadPriority( m_hThread,THREAD_PRIORITY_TIME_CRITICAL); Sleep( ...… 查看全部问答> |
|
环境Vxworks 5.5.1 在相同的地方,如果使用printf可以正确打印,但是使用vprintf就会报如下错误: CPU: Motorola MPC82xx ADS - HIP7 Runtime Name: VxWorks Runtime Version: 5.5.1 BSP version: 1 ...… 查看全部问答> |
|
一般来说只要到屏幕底端有足够空间,就下拉. 如果没有足够空间就上拉. 那么应该存在的上拉这个功能. 我想让它自动默认的为上拉,该怎么做? 如果不行,也可以这样,让下拉菜单不要长出我的对话框的底端也可以… 查看全部问答> |
|
最近又看了一下LPC1114的数据寄存器的内容。数据寄存器允许从被设置为输入的引脚上读取数据,往被设置输出的引脚写值。每个端口数据寄存器占用地址空间的0-0X3FFC,地址位13:2用于屏蔽。如图1: 原先一直对这个数据屏蔽作用搞不太懂,现在 ...… 查看全部问答> |
|
邦华330改进版、 最新功能:数字收音,USB、SD读卡功能,数字显示屏,卡座功能 技术参数: 1.电源:AC220V 内置DC12V/1.2AH 蓄电池,外接VDC 2.频率范围:VHF165-265MHz 3.振 ...… 查看全部问答> |
|
大家好,最近整理了一下,整理出好多打样有没有使用,多余的东西。有继电器、各种芯片、可燃气体传感器等等好多种类,但是每种数量都很少,这里就不一一列举了。如果你需要,可以QQ我,告诉我你要的一些常用的东西,我尽量帮你找,一次性处理,想收 ...… 查看全部问答> |
|
https://bbs.eeworld.com.cn/thread-308442-1-1.html 此贴貌似冒的人看啊!给新人一点帮助嘛!… 查看全部问答> |




