MC9S12怎么使用printf
时间: 2023-10-24 17:07:56 浏览: 69
飞思卡尔单片机
在MC9S12上使用printf需要先配置串口通信。以下是一个示例代码,可以将printf输出到串口0:
```
#include <stdio.h>
#include <stdarg.h>
#include <stdlib.h>
// 定义串口寄存器地址
#define SCIBDH *(volatile unsigned char *)(0x0000FF16)
#define SCIBDL *(volatile unsigned char *)(0x0000FF17)
#define SCICR1 *(volatile unsigned char *)(0x0000FF18)
#define SCICR2 *(volatile unsigned char *)(0x0000FF19)
#define SCISR1 *(volatile unsigned char *)(0x0000FF1C)
#define SCIDRL *(volatile unsigned char *)(0x0000FF1D)
// 定义波特率
#define BAUD_RATE 9600
// 初始化
void init_serial(void)
{
// 配置波特率
unsigned long baud_divisor = (unsigned long)(250000 / BAUD_RATE);
SCIBDH = (unsigned char)(baud_divisor >> 8);
SCIBDL = (unsigned char)(baud_divisor);
// 使能发送和接收
SCICR2 |= 0x0C;
}
// 发送字符
void send_char(char ch)
{
while (!(SCISR1 & 0x80));
SCIDRL = ch;
}
// 发送字符串
void send_string(char *str)
{
while (*str)
{
send_char(*str++);
}
}
// printf重定向
int putchar(int ch)
{
send_char(ch);
return ch;
}
// 主函数
int main(void)
{
init_serial();
printf("Hello, world!\n");
return 0;
}
```
在上述代码中,`init_serial`函数用于配置串口通信,`send_char`和`send_string`函数用于发送字符和字符串,`putchar`函数用于重定向printf输出到串口0。在主函数中,可以直接使用printf函数输出内容到串口0。
阅读全文