鸽子图片大全大图很多:STM32学习过程中整理的资料

来源:百度文库 编辑:九乡新闻网 时间:2024/07/07 16:35:20
STM32学习过程中整理的资料 2010-12-07 17:16

    在stm32的学习过程中,才真正的把大一时候学到的c语言用到实处。并且重新复习巩固了一遍c语言。在这里我总结了一些我学习过程中遇到的问题以及解决的办法,很多我也是百度一下才知道的,整理出来作为我的笔记,也方便大家来看。

    1、在c语言中怎么把一个整型数据转换成字符串

用itoa函数或者用sprintf,且看
char ch1[10],ch2[10];int z;z=123;_itoa(z,ch1,10);//这样把z作为字符串写入ch1
sprintf(a2,"%d",n);//这样把z写入字符串ch2输出可以用printfprintf(a1);
printf(a2);
printf("%d",n);
结果一样
至于这两个函数具体怎么用,这里就不详细说明,百度一下就有了。
2、STM32程序添加printf函数后无法运行的解决方法

标准库函数的默认输出设备是显示器,要实现在串口或LCD输出,必须重定义标准库函数里调用的与输出设备相关的函数.

例如:printf输出到串口,需要将fputc里面的输出指向串口(重定向),方法如下:

#ifdef __GNUC__
/* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printf
     set to 'Yes') calls __io_putchar() */
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif /* __GNUC__ */

PUTCHAR_PROTOTYPE
{
 /* 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);
 return ch;
}

因printf()之类的函数,使用了半主机模式。使用标准库会导致程序无法运行,以下是解决方法:

方法1.使用微库,因为使用微库的话,不会使用半主机模式.

方法2.仍然使用标准库,在主程序添加下面代码:

#pragma import(__use_no_semihosting)
_sys_exit(int x)
{
x = x;
}
struct __FILE
{
int handle;
/* Whatever you require here. If the only file you are using is */
/* standard output using printf() for debugging, no file handling */
/* is required. */
};
/* FILE is typedef’ d in stdio.h. */
FILE __stdout;

我在使用串口输出方面遇到了编译通过,但是无法运行。我的解决办法是并没有使用这个上面说的,而是换了输出方法,主要是开始编译通过了,但是在jlink环境下没法运行,去掉这个函数就可以了,换了输出方式了,在这里至少搞定了无法运行的情况。

3、STM32 103c8 的VDDA引脚,在电路上未连接任何电平.悬空了.结果发现,芯片没反应了,程序无法下载,最后一查,按照技术手册 Vref内部已与Vdda相连,而Vdda是为ADC,复位电路,RC PLL供电的。连接一下就解决问题了