rtc

1 这个程序用十进制不行。
2 注意是寄存器的起始地址是小端。寄存器的地址不连续的问题。
3 Int类型分为10进制,16进制,2进制也是。
char类型。
注意此处的寄存器中存的是BCD码,int型中的16进制。
4 void htoa(unsigned int data)
putc(data/16+48);
putc(data%16+48);
}
此处是把int类型(16进制的)data先转化为10进制然后转化为字符打印出来。
5 int atoh(char *data)
{
int sum = 0;

while(*data != '\0')
{
sum = sum*16+*data++-'0';
}

return sum;
}
此处是把char类型的数组中的数然后化为16进制然后输出。
6 BCD码只的就是16进制。

7 16进制 10进制 2进制
23 35 100011
17 23 10111
15 22 10110
10 16 10000
9 9
a 10
b 11
c 12
d 13
e 14
f 15
8 char time[7] = {0, 0, 0, 1, 0, 0, 1};(这里边是十进制)
2进制除以2就是10进制,16进制除以16就是10进制。
rtc_init(time);
void rtc_init(char *data)
{
RTC.RTCCON = 0x1;
RTC.BCDYEAR = data[0];(十进制赋值,但是进去就变为16进制了你也可以16进制赋值,)
RTC.BCDMON = data[1];
RTC.BCDDATE = data[2];
RTC.BCDDAY = data[3];
RTC.BCDHOUR = data[4];
RTC.BCDMIN = data[5];
RTC.BCDSEC = data[6];
RTC.RTCALM = 0x1<<6|data[7]<<0;
RTC.ALMSEC = data[8];
RTC.RTCCON = 0x0;
}
本来给rtc寄存器赋值,我们最好用16进制,因为BCD码本来就是16进制。
而十进制,本来不可以赋值的,但是
一直以为我们输入的是 10进制因为小的时候和16进制一样(最起码2进制一样),虽有小于9的时候可以赋值。
11 while(1)
{
puts("20");
htoa(RTC.BCDYEAR);
putc('-');
htoa(RTC.BCDMON);
putc('-');
htoa(RTC.BCDDATE);
putc(' ');
htoa(RTC.BCDDAY);
putc(' ');
htoa(RTC.BCDHOUR);
putc(':');
htoa(RTC.BCDMIN);
putc(':');
htoa(RTC.BCDSEC);
puts("\r\n");
sleep(1);
}
void htoa(unsigned int data)
{
putc(data/16+48);
putc(data%16+48);
}
从寄存器中取得的是16进制,所以我们用htoa函数,int类型16进制转化为字符串类型。
12 我们设置时间的时候输入的是字符串类型,而我们需要把子字符串传化为Int类型的16进制,然后放到寄存器里,
寄存里取出来打印的时候,还需要把16进制转化为字符类型才能打印。
13 断电后,芯片不提供时钟。CPU晶振(X2)的边上有一个时针晶振(X1)(网络还有一个晶振) ,RTC在CPU的里边,断电后独立运行。RTC有两个2级管,供选择电。

14 RTC.RTCCON=0x1;
RTC.BCDYEAR=0x1;
RTC.RTCCON=0x0;此处关闭BCD写。
15 RTC注意寄存器的地址不连的问题。
16 char time[9] = {0, 0, 0, 1, 0, 0, 1, 1, 0};
char data[32], *arg[11];
int i;
getsexample(data);

arg[0] = strtok(data, " ");
for(i=1; arg[i-1]!=NULL; i++)
{
arg[i] = strtok(NULL, " ");
}
if(strcmp(arg[0], "rtcset") == 0)
{
time[0] = atoh(arg[1]);(这里h代表16进制,但是没有加0x,所以还是转化为10进制保存)
time[1] = atoh(arg[2]);
time[2] = atoh(arg[3]);
time[3] = atoh(arg[4]);
time[4] = atoh(arg[5]);
time[5] = atoh(arg[6]);
time[6] = atoh(arg[7]);
time[7] = atoh(arg[8]);
time[8] = atoh(arg[9]);
rtc_init(time);
}
___________________________________________________________________
void rtc_init(char *d)
{
RTC.RTCCON = 0x1;
RTC.BCDYEAR = data[0];
RTC.BCDMON = data[1];
RTC.BCDDATE = data[2];
RTC.BCDDAY = data[3];
RTC.BCDHOUR = data[4];
RTC.BCDMIN = data[5];
RTC.BCDSEC = data[6];
RTC.RTCALM = 0x1<<6|data[7]<<0;
RTC.ALMSEC = data[8];
RTC.RTCCON = 0x0;
}
这里的char time[9] = {0, 0, 0, 1, 0, 0, 1, 1, 0};是字符型的数组,他的十进制表示不能大于255,也可由用字符直接表示‘9’等,但是给计算机和寄存器的时候仍然是十进制, atoh把字符转化为16进制的10进制表示,RTC.BCDYEAR = data[0];这里赋值的时候,data[0]是个地址,而地址中存的是字符,但是这个字符是以16进制的十进制表示的,所以仍然是10进制赋值给寄存器。给寄存器赋值的话,不论是16进制还是10进制,但是必须要int型,如果是字符也是他的十进制表示赋值。
****************************************************************
int time[7];
char buf[32], *p[9];
int i;

uart_init();

while(1)
{
puts("\r\nrtc> ");
gets(buf);
buf[strlen(buf)-2] = '\0';
p[0] = strtok(buf, " ");
for(i=1; p[i-1]!=NULL; i++)
{
p[i] = strtok(NULL, " ");
}

if(strcmp(p[0], "timeset") == 0)
{
time[0] = atoh(p[1]);
time[1] = atoh(p[2]);
time[2] = atoh(p[3]);
time[3] = atoh(p[4]);
time[4] = atoh(p[5]);
time[5] = atoh(p[6]);
time[6] = atoh(p[7]);
rtc_init(time);
}

if(strcmp(p[0], "time") == 0)
{
rtc_display();
}
}
_____________________________________________________________
void rtc_init(int *t)
{
RTC.RTCCON = 0x1;
RTC.BCDYEAR = t[0];
RTC.BCDMON = t[1];
RTC.BCDDATE = t[2];
RTC.BCDDAY = t[3];
RTC.BCDHOUR = t[4];
RTC.BCDMIN = t[5];
RTC.BCDSEC = t[6];
RTC.RTCCON = 0x0;
}
无论是int数组赋值,还是char数组赋值,我们函数都是用指针类型接收,字符和Int数组的数组名都表示指针。
****************************************************************
17 RTC的时间设置
你可以16进制0x14直接给寄存器赋值,从寄存器读出来的int型也是16进制的10进制表示20,然后你把它用字符串打印出来14。
你可以用10进制20直接给寄存器赋值,从寄存器里读出来的Int型16进制的10进制表示,也是20,然后你把他用字符表示出来就是14.
你可以用字符(比如对应的Int型仍然是0x14,或者20)给寄存器赋值,(计算机中一切都是10进制,所以我们说是字符赋值,仍然是用字符的10进制赋值,)吧20赋进去,从寄存器读出来的是20,不是你的字符。
18 问题既然说我们赋值的时候仍然是10进制,为什么不直接用atoi,或者itoa,
因为时间是60进制,计算机中所有数据都用16进制保存,这样才可以从寄存器里读出来的数字正确确定时间 。
比如60进制中的14分钟和59分钟,我们用串口出入14和59时,先用atoh,14转化为49+52,59转化为53+57,
这是16进制的10进制表示,把这个结果赋给寄存器,当我们读出来的时候101和110怎么转化为原来的分钟呢
,原来的一个十进制中的数101,怎么转化为两位的14,就是进去两个48,是5,5用什么公式转化为1和4,至少当前我不会,所以理解到这里就行了。
19 7500正好10秒。

转载于:https://www.cnblogs.com/coding4/p/5604770.html

字节跳动《实时音视频通讯技术》学习笔记之RTC概述及技术简介 字节跳动《实时音视频通讯技术》学习笔记之RTC概述及技术简介 什么是实时音视频 实时音视频(RTC)即基于IP技术实现的实时交互的音视频通信技术。 RTC 与 直播常用协议的区别 直播协议 播放延迟 FLV 3s-5s RTMP 3s-5s HLS 10s+ 而这里我们要使用的RTC技术就厉害了~ 它是基于IP技术的,它的延迟低于400ms,RTC传输的内容是音视频数据。 实时音视频应用场景 音视频通话 产品功能 1V1,多人音视频通话 可以美颜、使用道具等等。 技术 阅读详情

相关推荐

RTC 实时音视频技术知识全面盘点

对于交织后的语音,还要采用合适的错误隐蔽算法;与媒体无关的前向误差纠正技术也适合这种应用。音视频技术不仅局限用于会议系统这样的商业领域,也不仅仅是社交群聊,很敏感,因此,交织和与媒体无关的前向误差纠正技术都不适合这种应用。在不同场景下,推动着人们沟通互动方式的改变。的相关内容就介绍到这里了,为了帮助大家了解更多。是在设备端实时的转发音视频多媒体数据,让。远比想象中的多,应用规模也越来越大。,对延时的要求没有音质高;的过程中,我们发现很多客户。,后续开发新的产品就有可能。接入一个新技术,觉得。

m0_62167422的博客 2929

5.8GHzWiMAX射频系统设计

在芯片厂商未推出针对WiMAX标准5.8GHz频段射频芯片的情况下,利用SIGE公司开发的中频芯片SE7051L10及TI公司开发的射频芯片TRF2436,通过合理设计,成功地研制出5.8GHz频段CPE和点对点射频收发系统,测试指标满足或优于802.16d标准。详细介绍了主要芯片完成功能、主要技术指标、总体设计以及具体指标实现。

RTC实时音视频应用

RTC应用在社交娱乐、远程办公、在线教育、远程医疗和游戏直播等领域得到了广泛的应用,并呈现出人工智能技术的融合、5G网络的普及、增强现实和虚拟现实技术的应用以及行业标准的建立等发展趋势。RTC应用的特点包括低延迟、高清画质和音质、跨平台支持和多人互动等,其优势包括提高沟通效率、增强互动性、打破时空限制和推动创新和发展等。随着技术的不断进步和应用场景的不断拓展,RTC实时音视频应用将在未来发挥更加重要的作用,为人们的生活和工作带来更多的便利和创新。在远程医疗中,RTC应用可以实现远程诊断和治疗。

liveweb888的博客 683

5.8GHz频段FM解调IC RTC6705介绍.txt

RTC6705是Richwave推出的一个宽频带的FM发射器,应用5.8GHz的ISM频带FM传输的。该芯片包括一个5.8GHz频段的RF调制器、两个通道的音频调制器和一个具有+13 dBm输出功率的内部功率放大器

Webrtc视频采集由毫秒转换为rtp的时间戳的转换过程

源文件在: src/video/video_stream_encoder.cc 函数 void VideoStreamEncoder::OnFrame(const VideoFrame& video_frame) { 。。。。。。 // Convert NTP time, in ms, to RTP timestamp. const int kMsToRtpTimest...

rjc_lihui的专栏 2018

图传连接原理图

图传连接原理图,fpv数据传输连接方法。

RTC6705芯片手册

用于5.8G模拟图传 射频芯片 这是芯片手册 我也在找RTC6705的实际应用电路 有的人可以分享出来 谢谢 有研究的童鞋可以留言一起研究

深入探索实时音视频技术:RTC程序设计权威指南

在数字化时代,实时音视频通信(Real-Time Communications,简称RTC)技术已经成为连接人与人、企业与企业的重要桥梁。从简单的在线聊天到复杂的远程协作,再到现代的虚拟现实和增强现实体验,实时音视频技术的应用范围不断扩大,其背后的程序设计也变得愈加复杂和精细。本文旨在作为一份实时音视频权威指南,为开发者提供全面的RTC程序设计知识,包括核心技术原理、开发实践以及未来趋势分析,以帮助开发者构建更高效、稳定的实时音视频系统。首先,让我们从实时音视频传输的基本原理说起。

努力是为了站在万人之中,成为别人的光 13万+

【优质书籍推荐】RTC程序设计:实时音视频权威指南

今天给大家带来的是RTC程序设计:实时音视频权威指南的书籍推荐,希望能对同学们有所帮助。 文章目录 1. WebRTC概述 2. 好书推荐 3. 本书内容 4. 本书特色 5. 作者简介 6. 适合读者

weixin_43178406的博客 1万+

【送书福利-第三十七期】《 RTC程序设计:实时音视频权威指南》

RTC程序设计:实时音视频权威指南》系统地介绍了实时音视频系统的基础概念、工具、编程方法。《RTC程序设计:实时音视频权威指南》分为10章,第1章介绍信息与文字编码的基础知识,以及跨平台网络编程的基本方法。第2、3章介绍视频的采集与渲染技术。第4、5章介绍音频的采集与渲染技术。第6章介绍编解码相关的压缩技术。第7章介绍信令与媒体流的建连过程。第8章介绍网络传输过程中的优化技术。第9章介绍实时音视频的应用与可扩展架构。第10章介绍音视频系统核心指标及其计算方法。

1万+

5.8G发射RTC6705

rtc6705 5.8G的发射模块原理图(PDF),有需要就下载吧

RTC6705电路图

本文档是RTC6705的典型应用电路,包括外围电阻与外围电容等元器件

【音视频开发好书推荐】RTC程序设计:实时音视频权威指南

WebRTC(Web Real-Time Communication)是一个由Google发起的实时音视频通讯C++开源库,其提供了音视频采集、编码、网络传输,解码显示等一整套音视频解决方案,我们可以通过该开源库快速地构建出一个音视频通讯应用。一个实时音视频应用软件一般都会包括这样几个环节:音视频采集、音视频编码(压缩)、前后处理(美颜、滤镜、回声消除、噪声抑制等)、网络传输、解码渲染(音视频播放)等。每一个细分环节,还有更细分的技术模块。

Java 技术专栏,从入门到精通,熟悉企业级开发 5539

【音视频开发好书推荐1】《RTC程序设计:实时音视频权威指南》

推荐音视频开发好书:《RTC程序设计:实时音视频权威指南》。

dvlinker的技术专栏 1万+

【好书推荐-第七期】《RTC程序设计:实时音视频权威指南》(音视频开发必看!)

音视频一线技术专家鼎力打造,凝结15年实战经验,涵盖实时音视频端到端知识全貌,字节跳动实时音视频技术负责人与LiveVideoStack联合创始人等大咖联袂力荐

努力才是唯一的入场券。 2万+

开源 RTC 技术栈全解析:打造实时音视频通信的数字人底座

RTC 是 Real-Time Communication 的缩写,意为实时通信。低延迟:毫秒级数据交互;双向传输:通常为 P2P 或通过服务端中继;音视频及数据同步传输:实现完整交互能力。在数字人、直播互动、在线教育、协同办公、远程医疗等领域中,RTC 的作用至关重要。开源 RTC 技术的成熟,让构建低延迟、高交互的实时通信应用变得更加可控和高效。通过合理选择协议栈和组件,你可以为数字人直播、语音聊天室、在线教育等场景提供强大的通信能力。

花千树的专栏 2834

RTC-实时音视频通信技术介绍与应用

实时音视频(RTC)即基于IP技术实现的实时交互的音视频通信技术

m0_60259116的博客 2762

推荐好书《RTC程序设计:实时音视频权威指南》文末送5本(3个中奖方式)

推荐好书《RTC程序设计:实时音视频权威指南》文末送5本(3个中奖方式)

TrueDei 4689
上一篇: pwm计时器
下一篇: UART速度的问题
de1981
博客等级 码龄12年 8粉丝 208原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值