DARMSTM.DLL
pSTM32F103RB
printf重定位
#include 初始化串口
重写fputc 和 fgetc 函数
/****************************************************************************
* 名 称:int fputc(int ch, FILE *f)
* 功 能:printf函数的输出驱动函数
* 入口参数:无
* 出口参数:无
* 说 明:
* 调用方法:无
****************************************************************************/
int fputc(int ch, FILE *stream)
{
/* 堵塞判断串口是否发送完成 */
while((USART2->SR & UART_FLAG_TXE) == RESET);
/* 串口发送完成,将该字符发送 */
USART2->DR = (uint8_t) ch;
return ch;
}
/****************************************************************************
* 名 称: fgetc(FILE *f)
* 功 能: 键盘输入重定向函数
* 入口参数:无
* 出口参数:无
* 说 明:
* 调用方法:无
****************************************************************************/
int fgetc(FILE *f)
{
/* 堵塞判断串口是否接收完成 */
while((USART2->SR & UART_FLAG_RXNE) == RESET);
/* 串口接收完成,将该字符读出 */
return (USART2->DR);
}
勾选 Use MicroLIB
变量打印宏
#define PRINT_INT(i)
printf("%8s():&%-5s = 0x%-8x, %-5s = %-5d = 0x%-4x = '%c'n", __FUNCTION__, #i, &(i), #i, i, i, i);
关键字:KEIL MDK5 仿真文件
引用地址:
KEIL_MDK5仿真文件和参数名,printf 和 scanf 函数重定位
推荐阅读最新更新时间:2024-11-03 23:34
keil的错误提示error: C3900U: Unrecognized option '-O3'.
这是使用的keil版本(或者权限不够)不支持O3等级的优化。。。。设置一下优化等级即可。设置为level0,(不优化) 如果需要用到优化功能的话,需要相应的完整版。。仅仅破解64K限制的keil是不能用优化功能的。。破解成其他标准版或者开发版都可以
[单片机]
Keil 10月将发布MDK v5,uVision5时代来临
2013年10月,Keil公司(ARM公司之一)正式推出Keil MDK v5,该版本使用uVision5 IDE集成开发环境,是目前针对ARM微控制器,尤其是ARM Cortex-M内核微控制器最佳的一款集成开发工具。 MDK V5 概述 MDK v5向后兼容Keil MDK-ARM uVision4,以前的项目同样可以在MDK v5上进行开发, MDK v5同时加强了针对Cortex-M微控制器开发的支持,并且对传统的开发模式和界面进行升级,将分成两个部分,MDK Core和Software Packs。其中,Software Packs可以独立于工具链进行新芯片支持和中间库的升级。 MDK-ARM v5框架结构图
[嵌入式]
Keil C51 的printf
在Keil C51 中使用printf ,首先需要重新实现 putchar(char c)函数。此函数在 char putchar (char c) { ES=0; SBUF = c; while(TI==0); TI=0; ES=1; return 0; } 我们先分析一下上面这个程序哈, 关闭串口中断 发送单字节数据 等待发送完毕 清除TI标志 开启串口中断 在main函数里可以直接使用printf函数进行输出了。 但是,我一直存在这样一个疑惑: void main() { unsigned char test1 = 55; printf( the
[单片机]
Keil C51使用教程---C51 vs 标准C(三)
深入理解并应用C51对标准ANSIC的扩展是学习C51的关键之一。因为大多数扩展功能都是直接针对8051系列CPU硬件的。大致有以下8类: ●8051存储类型及存储区域 ●存储模式 ●存储器类型声明 ●变量类型声明 ●位变量与位寻址 ●特殊功能寄存器(SFR) ●C51指针 ●函数属性 具体说明如下(8031为缺省CPU)。 第一节 Keil C51扩展关键字 C51 V4.0版本有以下扩展关键字(共19个): _at_ idata sfr16 alien interrupt small bdata large _task_
[单片机]
keil mini2440 分散加载文件scatter中(InRoot$$Sections)的理解
查阅一些资料终于认识了 (InRoot Sections)实现对映像的加载,而这一段代码就是∗(InRoot Sections)实现对映像的加载,而这一段代码就是∗(InRoot Sections)它是__main()的一部分。 从启动代码说起 启动代码 1。异常/中断跳转的地址表。 2。堆栈初始化 3。分散加载镜像文件 IMAGE(映像文件) 1个RO, 1个RW, 1个ZI组成。 并且RO的load region和execution region相同,这个里面放置 *(InRoot$$Sections) 主要作用COPY RW区到RAM,然后再RW区后面创建ZI区。 库函数__main函数中有这个段。 注释掉会报出
[单片机]
将KEIL软件中数组数据导出的简单方法
编写STM32单片机程序时,经常性的需要进行数据的采集或者传输,为了便于观察和处理数据,需要对数据进行分析和可视化处理,这个时候,我们希望把在调试代码的时候,将KEIL中的数据取出来,之前也想了一些办法,虽然能取出来,但是麻烦,今天偶然发现了一个超级好用的方法,推荐给大家。 01进入调试界面 这步没啥说的,既然要采集数据总要让程序运行起来,进入调试界面,这时候Debug-- Function Editor 可用。 02编辑代码 进入下面界面, 根据自己的需要编辑输出的数组名称和长度,代码如下: FUNC void export_data(void) { int i; exec( log Data.lo
[单片机]
用keil建立lpc1114工程
双击桌面快捷方式,打开KEIL,如下图所示: 单击菜单“Project”,在下拉菜单中选择“New μVision Project” 在弹出的窗口中,选择工程保存路径,例如把工程保存到E盘的Myfirst文件夹,并把工程名命名为Myfirst。如下图所示: 点击“保存”按钮,弹出另一个窗口,选择NXP公司的LPC1114/302,如下图所示: 在上图中右边的文本框里面是LPC1114/302芯片的介绍。单击“OK”按钮,会弹出一个窗口,询问是否加载startup_LPC11xx.s文件到工程文件夹。这里我们选择“是”。 此时,在Project窗口中,会显示如下图所示的Target 1。 单击它前
[单片机]
STM32F072RB 实作笔记(二)- 第一次启动 Keil 编写 C 语言
设定特别的档案夹 在桌面上 Keil 的 图标是长这个样子的! 把他点开后 应该是下图这个样子: 找到 Project 选择 New uVision Project, 我们把这个动作叫做 New 一个新 Project! 当你选择完成后会出现下图的需求,要求 给一个档案名称 选择一个档案夹给他! 从整体规划上,我建议按照下面的方式规划 1 将所有的 STM32F072RB 实作计划都放在一个目录下 2 把Project 名称设置的和档案夹一样 我的档案夹里面有许多叫 “模板” 的,是因为里面都有两个固定的程式。我的做法是copy一堆 “模板” 档案夹,然后改名。这样就不会遗忘这些固定的档案。 Keil
[单片机]