【ZigBee/ZStack快速入门】04-串口

news2024/11/19 13:13:31

时钟

协议栈都是用的32M晶振工作的,所以在学习串口使用之前,应该学习一下如何调时钟

  1. cc2530在运行过程中需要一个高频时钟信号和一个低频时钟信号,
  2. 高频时钟信号主要供给cpu保证程序运行,16Mhz RC(这也是为什么定时器计算分频时是以16为基准)电路芯片内部、32Mhz外接石英晶振
    低频时钟信号看门狗,睡眠定时器等片上外设,芯片内部的32k rc电路,外接32.768k石英晶振
  3. cc2530默认上电时,是内部的2个rc电路作为高频和低频的时钟来源。
  4. 如果我们在用串口,特别是无线通信的时候,必修要用32M的石英晶振作为高频时钟来源(怎么样从16M切换到32M呢)
  5. 高频时钟源特点:
    2高频时钟源可以同时起振产生高频时钟信号;
    而2个低频时钟源,某一时刻只能有1个起振,并且起振的这个时钟源供给cc2530

系统高频时钟源切换步骤:
**在这里插入图片描述**
1 让SLEEPCMD 第2位为0,表示开启2个高频时钟源;
2 SLEEPSTA寄存器的第6位为1表示32M时钟源稳定;
3 超过63us延时;
4 把寄存器CLKCONCMD的第3位设置为000,表示不分配输出;
5 把寄存器CLKCONCMD的第6位清0,设置32M作为系统主时钟;
6 如果读寄存器CLKCONSTA第6位为1,则表示32M的时钟源已经作为了当前的系统主时钟,程序可以往下运行。

void Init32M(){
    SLEEPCMD &= 0xfb;//1111 1011 开启2个高频时钟源
    while((SLEEPSTA & 0x40)==0);//0100 0000 SLEEPSTA寄存器的第6位为1表示32M时钟源稳定;
    delay63us();//超过63us延时
    CLKCONCMD &= 0xF8;//1111 1000,把寄存器CLKCONCMD的第3位设置为000,表示不分频输出;
    CLKCONCMD &= 0xBF;//1011 1111,把寄存器CLKCONCMD的第6位清0,设置32M作为系统主时钟;
    while((CLKCONSTA & 0x40)==0);//0100 0000 等待32M成功成为当前系统主时钟
}

串口

协议栈都是用的32M晶振工作的,所以在学习串口使用之前,应该学习一下如何调时钟
在这里插入图片描述
在这里插入图片描述
注意:

  1. 每个工程都需要重新配置一遍 Project->Option,不配置是不能烧录的
  2. 对于下载是用仿真器,但是对于串口的收发测试连接,需要连串口 usb 口
  3. 下面的示例没有提到如何改校验位、停止位和数据位(默认为 8-NONE-1)
#include <iocc2530.h>

void Cfg32M(){
  SLEEPCMD &= 0xFB;//1111 1011 开启2个高频时钟源
  while(0 == (SLEEPSTA & 0x40));//0100 0000 SLEEPSTA寄存器的第6位为1表示32M时钟源稳定
  CLKCONCMD &= 0xF8;//1111 1000,把寄存器CLKCONCMD的第3位设置为000,表示不分配输出;
  CLKCONCMD &= 0xBF;//1011 1111,把寄存器CLKCONCMD的第6位清0,设置32M作为系统主时钟;
  while(0==(CLKCONSTA & 0x40));//0100 0000 等待32M成功成为当前系统主时钟
  SLEEPCMD |= 0x40;
}
void UartCfg(){
    PERCFG = 0x00;				//位置1 P0口
    P0SEL = 0x0c;				//P0用作串口
    P2DIR &= ~0XC0;                             //P0优先作为UART0    
    
    U0CSR |= 0x80;				//USART模式选择为UART方式  1000 0000(还可以设置成SPI)
    U0GCR |= 8;				        //U0GCR和U0BAUD共同决定了波特率值
    U0BAUD |= 59;				//波特率设为9600
    UTX0IF = 1;                                 //UART0 TX中断标志初始置位1 
    
    U0CSR |= 0X40;				//Bit[6]UART接收器使能:1接收器使能
    IEN0 |= 0x84;				//开总中断,接收中断
}

void main(){
  Cfg32M();	//改上电默认的16M晶振为32M晶振
  UartCfg();    //串口相关的寄存器配置
  while(1){
    
  }
}
/****************************************************************
串口接收一个字符:一旦有数据从串口传至CC2530,则进入中断,将接收到的数据赋值给变量temp.然后再发出去
****************************************************************/
#pragma vector = URX0_VECTOR
 __interrupt void UART0_ISR(void)
{
    char temp;
    URX0IF = 0;//串口0中断标志位,当接受中断时置1,软件清0,为下一次中断准备
    temp = U0DBUF;  //从接受寄存器里取字节存入变量ch
    U0DBUF = temp;//把变量temp的值赋给串口0发送数据寄存器
    while(0==UTX0IF);//当UTX0IF为1时发送结束(接收时中断,发送时也中断)
    UTX0IF = 0;//中断完毕后再次将中断清0,为下一次中断准备 
}

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

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

相关文章

GPU-CPU-ARM-X86-RISC-CUDA

CPU更适合处理复杂逻辑运算和单线程任务&#xff0c;而GPU则更适合处理大规模并行计算任务。 CPU&#xff08;中央处理器&#xff09;通常具有较少的核心数量&#xff08;一般在2到16个之间&#xff09;&#xff0c;但每个核心的性能较强&#xff0c;擅长执行复杂的运算和逻辑…

DevSecOps平台架构系列-亚马逊云AWS DevSecOps平台架构

目录 一、概述 二、AWS DevSecOps实施原则 2.1 尽早采用安全测试&#xff0c;加速问题反馈 2.2 优先考虑预防性安全控制 2.3 部署检测性安全控制时&#xff0c;确保有与之互补的响应性安全控制 2.4 安全自动化 2.5 总结 三、AWS DevSecOps关键组件 3.1 关键组件 3.2 关…

LeetCode Python - 78. 子集

目录 题目描述解法方法一&#xff1a;DFS(回溯)方法二&#xff1a;二进制枚举 运行结果方法一方法二 题目描述 给你一个整数数组 nums &#xff0c;数组中的元素 互不相同 。返回该数组所有可能的 子集 &#xff08;幂集&#xff09;。 解集 不能 包含重复的子集。你可以按 任…

视频声音生成字幕 pr生成视频字幕 以及字幕乱码的解决

目录 目录 1、首先把要生成字幕的视频拖入以创建序列 2、点击工具栏的 窗口 选择 文本 3、选择字幕下的 转录序列 4、选择输出的语言&#xff08;主要看视频声音说的是啥语言&#xff09; 5、音轨 选择 音频1​编辑 6、点击转录 7、等待转录文本 8、点击创建说明性字幕按…

智慧交通(代码实现案例)

1.项目简介 目标: 了解智慧交通项目的架构知道智慧交通项目中的模块能够完成智慧交通项目的环境搭建 该项目是智慧交通项目&#xff0c;通过该项目掌握计算机视觉的方法在交通领域的相关应用&#xff0c;包括车道线检测的方法&#xff0c;多目标车辆追踪及流量统计方法&#…

如何快速进行城市内涝模拟?HTWATER软件

原文链接&#xff1a;如何快速进行城市内涝模拟&#xff1f;HTWATER软件https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247599079&idx2&sndc6f3da8b17c5587cf5b7766e7019729&chksmfa820200cdf58b16658983ecfbf2b369bff39813302942d6f7eb7b71428c68da71…

Django 仿博客园练习

数据库搭建 部分功能介绍 【一】注册 &#xff08;1&#xff09;效果显示、简单简介 主要亮点 结合了layui和forms组件默认头像可以随着性别的选择发生改变自定义头像可以实时更新显示forms组件报错信息可以局部刷新显示在对应框体下面 没有直接使用layui的前端验证后端验证…

Vue2 使用mockjs

一、创建项目 vue create mock-demo二、安装 npm install mockjs --save-dev npm install axios --save三、创建mock文件夹 四、修改main.js 五、应用

js选择语句

文章目录 1. if 分支语句1.1. 示例代码1.2. 运行结果 2. if 双分支语句3. if 多分支语句4. switch 语句&#xff08;了解&#xff09;4.1. 注意4.2. case 穿透现象4.3. case 穿透产生的原因 5. switch 语句与选择语句区别别5.1. 语法上的区别5.2. 应用场景上的区别 6. 三元表达…

HCIP—BGP路由发布

R1和R2&#xff0c;R4和R5建立EBGP对等体 R1和R2&#xff08;R4和R5&#xff09;之间属于EBGP对等体&#xff0c;可以使用直连物理接口建立对等体关系&#xff0c;TTL值默认1。由于使用直连物理接口方式建立&#xff0c;刚好一跳到达。 [R1]bgp 100 [R1-bgp]router-i…

燃气官网安全运行监测系统-阀井燃气监测仪-旭华智能

近年来&#xff0c;燃气爆炸事故频发&#xff0c;造成了重大人员伤亡和财产损失。这也再次为我们敲响警钟&#xff0c;燃气是我们日常生活中不可或缺的能源&#xff0c;但其潜在的危险性也是不容小觑。因此在重要节点加装燃气阀井气体监测仪&#xff0c;并将数据上传到系统平台…

【QT+QGIS跨平台编译】之九十四:【QGIS_App跨平台编译】—【错误处理:字符串错误】

文章目录 一、字符串错误二、涉及到的文件一、字符串错误 常量中有换行符错误:(也有const char * 到 LPCWSTR 转换的错误) 需要把对应的文档用记事本打开,另存为 “带有BOM的UTF-8” 二、涉及到的文件 涉及到的文件有: src\app\qgisapp.cpp src\app\qgsprojectpropert…

JetBrains全家桶激活,分享 DataGrip 2024 激活的方案

大家好&#xff0c;欢迎来到金榜探云手&#xff01; DataGrip 公司简介 JetBrains 是一家专注于开发工具的软件公司&#xff0c;总部位于捷克。他们以提供强大的集成开发环境&#xff08;IDE&#xff09;而闻名&#xff0c;如 IntelliJ IDEA、PyCharm、和 WebStorm等。这些工…

金融投贷通--接口测试分析、设计与实现

金融投贷通--接口测试分析、设计与实现 接⼝相关理论ui功能测试和接⼝测试那个先执⾏ui功能测试与接⼝测试的区别ui功能测试和接⼝测试那个更⾼效 投资业务接⼝接口测试流程如何测试分析api文档项目难点 测试点提取注册图⽚验证码、注册验证码注册登录测试点开通登录测试点开通…

API成网络攻击常见载体,如何确保API安全?

根据Imperva发布的《2024年API安全状况报告》&#xff0c;API成为网络攻击者的常见载体&#xff0c;这是因为大部分互联网流量&#xff08;71%&#xff09;都是API调用&#xff0c;API是访问敏感数据的直接途径。根据安全公司Fastly的一项调查显示&#xff0c;95%的企业在过去1…

蓝桥杯刷题-子串简写

子串简写 代码 kint(input()) s,c1,c2input().split() pre[0]*len(s) ans0 for i in range(len(s)):pre[i]pre[i-1]if c1s[i]:pre[i]1elif c2s[i] and i1-k>0:anspre[i-k1] print(ans)

宾大率先推出藤校首个AI专业!25Fall即可申请!

随着人工智能技术的不断发展&#xff0c;当今社会对AI的需求已呈现出日益多样化的趋势。由ChatGPT、Midjourney等AI应用领衔&#xff0c;生成式的人工智能迅速崛起。各个领域都开始意识到AI的潜在应用价值&#xff0c;该领域的人才需求量也越来越大。在这样的人工智能热潮下&am…

【办公类-21-10】三级育婴师 视频转文字docx(等线小五单倍行距),批量改成“宋体小四、1.5倍行距、蓝色字体、去掉五分钟”

作品展示 背景需求 今天将最后3个育婴师操作视频做整理 第1步&#xff1a;视频MP4转MP3 【办公类-40-01】20240311 用Python将MP4转MP3提取音频 &#xff08;家长会系列一&#xff09;-CSDN博客文章浏览阅读393次&#xff0c;点赞9次&#xff0c;收藏6次。【办公类-40-01】20…

java网络原理(四)----tcp特性

一.滑动窗口 滑动窗口&#xff1a;可以提高传输效率&#xff0c;准确的来说是让tcp在可靠传输的前提下&#xff0c;效率不要太拉胯。使用滑动窗口不能使tcp变的比UDP块&#xff0c;但能减少差距。 前面谈过tcp的传输数据的时&#xff0c;会把数据进行编号&#xff0c;每次传固…

Go语言介绍以及如何在Go语言中操作MySQL数据库

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…