microchip中使用printf给AVR单片机串口重定向

 

 重定向中修改需要的串口

#ifndef USART1_H_
#define USART1_H_#ifndef F_CPU
#define  F_CPU 11059200UL
#endif
#define  BAUDRATE    9600
#include <avr/io.h>
#include <avr/interrupt.h>#include <stdio.h>
#include <string.h>#define PRINT
/*
* printf 重定向初始化串口后需要执行  stdout = &mystdout;
*/
#ifdef PRINT
static int uart_putchar(char c, FILE *stream);
static FILE mystdout = FDEV_SETUP_STREAM(uart_putchar, NULL,_FDEV_SETUP_WRITE);
static int uart_putchar(char c, FILE *stream)  //自定义的putchar
{while(!(UCSR1A&0x20)); UDR1 = c;return 0;
}
#endifvoid init_USART1( void );			 // USART1 初始化
void usart1_send(uint8_t data);       // 发送采用查询方式,发送一个字节
void usart1_s(char * data);           // 发送字符串
void usart1_send_array(uint8_t send_array[],uint8_t num);#endif /* USART1_H_ */

 初始化中一定要加入stdout = &mystdout;

#include <usart1.h>
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>void  init_USART1( void ) // USART1 初始化
{stdout = &mystdout;UCSR1B = 0x00;    // 禁止发送器和接收器,禁止串口中断UCSR1A = 0x00;	  // 各标志位清零UCSR1C = (1<<UCSZ10)|(1<<UCSZ11);	   //写 ,异步,8位数据,无奇偶校验,一个停止位,无倍速UBRR1L = (F_CPU/BAUDRATE/16-1)%256; //9600UBRR1H = (F_CPU/BAUDRATE/16-1)/256;UCSR1B = (1<<TXEN1)|(1<<RXEN1)|(1<<RXCIE1);    // 使能发送 ,使能接收,使能接收中断sei();
}
void usart1_send(uint8_t data)
{while(!(UCSR1A&(1<<UDRE1))); //第五位是否为1,从而满足条件退出循环发送数据UDR1=data;while(!(UCSR1A&(1<<TXC1)));UCSR1A|=(1<<TXC1); //写1进行清除操作
}void usart1_s(char * data)   //发送字符串
{while (*data){usart1_send(*data++);}
}
void usart1_send_array(uint8_t send_array[],uint8_t num) //两个参数 一是数组(的数据) 二是数组长度1-255
{//串口发送uint8_t i=0;  //定义一个局部变量  用来 发送字符串 ++运算while(i<num){usart1_send(send_array[i]); // 发送数据i++;  //值 加一}
}
int main(void)
{/* Replace with your application code */wdt_enable(WDTO_1S);        // 启动看门狗,1s一次init_USART1();				// USART1 初始化while (1) {wdt_reset();            // 喂狗printf("page2.t3.txt=\"%d\"\xff\xff\xff",P1[0]);P1[0]++;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/879757.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机专业毕设-校园新闻网站

1 项目介绍 基于SSMVue的校园新闻网站&#xff1a;后端 SpringBoot、Mybatis-Plus&#xff0c;前端VueElementUI&#xff0c;具体功能如下&#xff1a; 管理端 个人中心&#xff1a;查看和修改个人信息用户管理新闻类型管理校园新闻管理留言板管理论坛交流管理轮播图管理 用…

python知识点100篇系列(18)-解析m3u8文件的下载视频

什么是m3u8:m3u8是苹果公司推出的视频播放标准,是m3u8的一种,只是编码格式采用的是UTF-8。 其实m3u8是一种索引文件,m3u8文件中记录了视频的网络地址; 和m3u8配套的一个概念是HLS:HLS(Http Live Streaming) 是一个由苹果公司提出的基于HTTP的流媒体网络传输协议,直接把…

groups 命令:显示当前用属组

一、命令简介 ​groups​命令用于显示当前用户所属的用户组有哪些。 相关命令&#xff1a; groupadd 添加一个用户组。groupdel 删除一个用户组。 ‍ 二、命令参数 groups [选项] [用户名]用户名&#xff1a;要查询用户组的用户名。如果不指定用户名&#xff0c;则默认为…

开放标准如何破解企业数字化与可持续发展的困境:The Open Group引领生态系统架构创新

应对数字化与可持续发展的双重挑战&#xff0c;开放标准是关键 在当今快速变化的商业环境中&#xff0c;企业不仅需要通过数字化转型提升竞争力&#xff0c;还面临日益严格的可持续发展要求。开放标准正在成为企业破解这一双重挑战的核心工具。The Open Group 2024生态系统架构…

视频监控摄像头国标GB28181配置参数逐条解析

转载&#xff1a;视频监控摄像头国标GB28181配置参数逐条解析 现在的很多信息化项目&#xff0c;都会涉及到国标GB28181的视频监控产品&#xff0c;当我们配置这些国标平台&#xff0c;录像机&#xff0c;摄像头时&#xff0c;如果对相关参数的定义不清楚的话&#xff0c;会给我…

20240919在友善之臂的NanoPC-T6开发板上使用Rockchip原厂的Buildroot时打开CONFIG_USB_NET_RNDIS_HOST宏

20240919在友善之臂的NanoPC-T6开发板上使用Rockchip原厂的Buildroot时打开CONFIG_USB_NET_RNDIS_HOST宏 2024/9/19 18:20 缘起&#xff0c;大毛PK二毛战况激烈&#xff0c;穿越机大卖&#xff01;我司拆同行的图传作品。 发现&#xff1a; 主控&#xff1a;飞凌OK3588-C核心板…

【Python常用模块】_cx_Oracle模块详解

课 程 推 荐我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈虚 拟 环 境 搭 建 :👉👉 Python项目虚拟环境(超详细讲解) 👈👈PyQt5 系 列 教 程:👉👉 Python GUI(PyQt5)教程合集 👈👈…

演示:基于WPF的自绘的中国地铁轨道控件

一、目的&#xff1a;演示一个基于WPF的自绘的中国地铁轨道控件 二、效果演示 北京地铁 成都地铁 上海地铁 深圳地铁 南京地铁 长春地铁 哈尔滨地铁 武汉地铁 厦门地铁 香港地铁 三、功能 支持平移、缩放等操作 鼠标悬停显示线路信息和站点信息 按表格显示&#xff0c;按纸张…

使用 nvm 管理 node 版本:如何在 macOS 和 Windows 上安装使用nvm

&#x1f525; 个人主页&#xff1a;空白诗 文章目录 一、引言二、nvm的安装与基本使用2.1 macOS安装nvm2.1.1 使用 curl 安装2.1.2 使用 Homebrew 安装 2.2 Windows安装nvm2.2.1 下载 nvm-windows2.2.2 安装 nvm-windows 2.3 安装node2.4 切换node版本 三、常见问题及解决方案…

2024年数学建模比赛题目及解题代码

目录 一、引言 1. 1竞赛背景介绍 1.1.1数学建模竞赛概述 1.1.2生产过程决策问题在竞赛中的重要性 1.2 解题前准备 1.2.2 工具与资源准备 1.2.3 心态调整与策略规划 二、问题理解与分析 三、模型构建与求解 3.1 模型选择与设计 3.1.1 根据问题特性选择合适的数学模型类…

B/S架构和C/S架构

一、B/S架构&#xff08;Browser/Server&#xff0c;浏览器/服务器架构&#xff09; 1. 定义 B/S架构是一种网络架构模式&#xff0c;用户通过Web浏览器来访问应用程序。在这种架构中&#xff0c;客户端主要负责用户交互和显示界面&#xff0c;而服务器则负责业务逻辑和数据处…

鸿蒙OpenHarmony【轻量系统芯片移植案例】标准系统方案之扬帆移植案例

标准系统方案之扬帆移植案例 ​ 本文章是基于瑞芯微RK3399芯片的yangfan开发板&#xff0c;进行标准系统相关功能的移植&#xff0c;主要包括产品配置添加&#xff0c;内核启动、升级&#xff0c;音频ADM化&#xff0c;Camera&#xff0c;TP&#xff0c;LCD&#xff0c;WIFI&a…

观成科技:新版suo5隧道工具加密流量跟踪分析

1、工具简介 suo5是一个高性能的http隧道代理工具&#xff0c;支持全双工半双工模式&#xff0c;具有很高的传输性能&#xff0c;现在越来越多的webshell管理工具与内存马生成工具都支持了生成suo5木马的功能。从v1.1.0版本开始&#xff0c;其TLS协议传输功能中&#xff0c;增…

python学习笔记目录

基于windows下docker安装HDDM-CSDN博客 在python中安装HDDM-CSDN博客&#xff08;这个办法没安装成功&#xff09;

青海省基础地理矢量数据

青海是长江、黄河、沧澜江的发源地&#xff0c;因此被誉为“三江源”和“中华水塔”&#xff0c;具有全球独一无二的生态地位。青海省拥有丰富的水资源和生物多样性&#xff0c;对维护亚洲的水资源和生态平衡具有重要作用。 该数据集涵盖了青海省内的主要地理要素&#xff0c;包…

【案例】--mongodb的响应慢思考案例

目录 一、问题现象及思考思路1、问题现象2、思考思路3、问题分析二、对mongodb查询的影响有哪些1、单条数据大,对查询的影响2、mongodb硬件性能,对查询的影响三、分页查询问题及优化策略1、索引有效利用2、基于索引的游标分页3、聚合策略4、减少查询返回的数据量5、缓存机制6…

Linux服务器及应用环境快速部署、调试、迁移、维护、监控

1. 请解释什么是Linux&#xff1f; Linux是一种开源操作系统&#xff08;Operating System&#xff0c;OS&#xff09;&#xff0c;它最初由Linus Torvalds于1991年创建。自那时起&#xff0c;Linux逐渐发展成为全球最广泛使用的操作系统之一。以下是对Linux的详细解释&#x…

聚焦汽车智能化与电动化,亚洲领先的汽车工业技术博览会 2025年11月与您相约 AUTO TECH 华南展

抢占市场先机︱聚焦汽车智能化与电动化&#xff0c;亚洲领先的汽车工业技术博览会 2025年11月与您相约 AUTO TECH 华南展 随着汽车智能化与电动化的迅猛发展&#xff0c;汽车电子技术、车用功率半导体技术、智能座舱技术、轻量化技术/材料、软件定义汽车、EV/HV技术、测试测量技…

在linux下,找到指定命令对应的路径信息

如果 which 和 whereis 命令都没有找到某个命令的原文件位置&#xff0c;可以尝试以下方法&#xff1a; 一、使用 type 命令 type 命令可以显示一个命令是内置命令还是外部命令&#xff0c;并给出其路径&#xff08;如果是外部命令&#xff09;。 例如&#xff1a; type co…

Android架构组件:MVVM模式的实战应用与数据绑定技巧

目录 引言 一、MVVM模式概述 1.1 MVVM模式简介 1.2 MVVM模式的优势 二、MVVM模式的实现 2.1 项目环境配置 2.2 创建MVVM组件 2.2.1 创建数据模型 2.2.2 创建数据仓库 2.2.3 创建ViewModel 2.2.4 创建布局文件 2.2.5 创建RecyclerView适配器 2.3 在Activity中绑定V…