新定义MCU开发板测评 + 使用printf重定向
本帖最后由 袁胜富 于 2022-10-30 19:20 编辑一、原因
由于开发评估版没有板载仿真器,导致十分不方便在调试代码时。于是使用串口1重定向prinf,用于打印,调试信息。
static/image/hrline/line9.png
二、代码
头文件
#ifndef __UART1_H__
#define __UART1_H__
#include "SC_Init.h" // MCU initialization header file, including all firmware library header files
#include "..\Drivers\SCDriver_list.h"
#include "HeadFiles\SC_itExtern.h"
#include "rd8_usci1.h"
voidUart1_Init(unsigned long int baudrate);
void sendstring(unsigned char *string);
void uart_printf(const char *fmt,...);
voidUart1_SendChar(uint8_t ch);
voidDelay(unsigned int time);
#endif
源文件
#include "uart1.h"
#include <stdio.h>
#include <string.h>
#include <stdarg.h>
bit Uart1SendFlag = 0; //Uart1发送中断标志位
bit Uart1ReceiveFlag = 0; //Uart1接收中断标志位
voidDelay(unsigned int time)
{
uint16_t i;
while(time--)
{
i =4095;
while(i--);
}
}
voidUart1_Init(unsigned long int baudrate)
{
P1CON &= 0xF5; //TX/RX设置为输入带上拉
P1PH|= 0x0A;
OTCON |= 0xC0; //串行接口SSI1选择Uart1通信
US1CON0 = 0x50; //设置通信方式为模式一,允许接收
US1CON1 = 32*1000000/baudrate; //波特率低位控制
US1CON2 = (32*1000000/baudrate)>>8; //波特率高位控制
IE2 |= 0x01; //开启SSI1中断
/*USCI1_Init write here*/
EA = 1;
}
voidUart1_SendChar(uint8_t ch)
{
US1CON3 = ch;
while(!Uart1SendFlag);
Uart1SendFlag = 0;
}
void USCI1Interrupt() interrupt 15
{
if(US1CON0&0x02) //发送标志位判断
{
US1CON0 &= 0xFE;
Uart1SendFlag = 1;
}
if((US1CON0&0x01))//接收标志位判断
{
US1CON0 &= 0xFD;
Uart1ReceiveFlag = 1;
}
}
void sendstring(unsigned char *string)//此处*string相当于数组
{
while(*string!='\0')//判断是否到字符串末尾
{
Uart1_SendChar(*string);
string++;
}
}
void uart_printf(const char *fmt,...)
{
va_list ap;
char xdata string;//访问内部拓展RAM,非访问外部RAM,不能超过内部拓展RAM大小(此处为1024)
va_start(ap,fmt);
vsprintf(string,fmt,ap);//此处也可以使用sprintf函数,用法差不多,稍加修改即可,此处略去
sendstring(string);
va_end(ap);
}
/*
**重写printf调用的putchar函数,重定向到串口输出
**需要引入头文件<stdio.h>
*****/
char putchar(char c){
//输出重定向到串口
Uart1_SendChar(c);
return c;//返回给函数的调用者printf
}
static/image/hrline/line9.png
三、效果
static/image/hrline/line9.png
四、使用感受 总体来说,8位机入门目前来看,比32位难一点,调试手段没有32位丰富。
重定义代码官方提供吗?还是你自己研究出来的。? 开发板的相关资料找谁要啊 七毛钱 发表于 2022-11-9 16:39
开发板的相关资料找谁要啊
任何问题,到官网联系客服人员 天天向善 发表于 2022-11-8 14:00
重定义代码官方提供吗?还是你自己研究出来的。?
自己吧 袁胜富 发表于 2022-11-13 23:12
自己吧
厉害了大佬! 是不是需要microlib? keil的功能,不是很好用呢。
页:
[1]