CC1310直接操作寄存器编程
官方 CC13x0 提供的驱动为了兼容多种器件和操作系统比较抽象,例如串口发送函数是这样的:
int_fast32_t UART_write(UART_Handle handle, const void *buffer, size_t size)
{return (handle->fxnTablePtr->writeFxn(handle, buffer, size));
}
轻易看不出来是如何操作寄存器的,这种方式的驱动文件放在.../source/ti/driver 目录下面
下面通过一个串口收发函数的开发历程来说明下如何通过直接操作寄存器这种最底层的方式进行程序开发
1. 寄存器定义头文件
SDK提供的寄存器定义放在 .../source/ti/devices/cc13x0/inc目录下的一堆头文件里,hw_memmap.h文件里面定义了各个外设的基地址,例如:
#define UART0_BASE 0x40001000 // UART
各个外设对应的头文件里面定义了每个寄存器的偏移地址,例如hw_uart.h里面定义了
#define UART_O_CTL 0x00000030
2.寄存器读写
hw_types.h里面定义了寄存器的读写函数
// Word (32 bit) access to address x// Read example : my32BitVar = HWREG(base_addr + offset) ;// Write example : HWREG(base_addr + offset) = my32BitVar ;#define HWREG(x) \(*((volatile unsigned long *)(x)))
3. 一个串口自收自发完整示例代码如下:
HWREGB(PRCM_BASE+PRCM_O_UARTCLKGR)=1; //UARTCLKGR 使能HWREGB(PRCM_BASE+PRCM_O_UARTCLKGS)=1; //UARTCLKGS 使能HWREGB(PRCM_BASE+PRCM_O_UARTCLKGDS)=1; //UARTCLKGDS 使能while(!(HWREGBITW(PRCM_BASE+PRCM_O_PDSTAT0,PRCM_PDSTAT0_SERIAL_ON_BITN))){HWREGBITW(PRCM_BASE+PRCM_O_PDCTL0,PRCM_PDCTL0_SERIAL_ON_BITN) =1;//SERIAL ON}HWREGBITW(PRCM_BASE+PRCM_O_CLKLOADCTL,PRCM_CLKLOADCTL_LOAD_BITN) =1;//LOAD ENABLE//IOC寄存器使能HWREG(IOC_BASE+IOC_O_IOCFG2) =0x2000600F;HWREG(IOC_BASE+IOC_O_IOCFG3) =0x00006010;//UART 波特率设置//HWREGBITW(UART0_BASE+UART_O_CTL,UART_CTL_UARTEN_BITN) =0;HWREGB(UART0_BASE+UART_O_CTL) =0;HWREGH(UART0_BASE+UART_O_IBRD) =0x1A;HWREGB(UART0_BASE+UART_O_FBRD) =0x3;HWREGB(UART0_BASE+UART_O_LCRH) =0x70;HWREGH(UART0_BASE+UART_O_CTL) =0x0301;/* Loop forever echoing */while (1) {if(HWREGBITB(UART0_BASE+UART_O_FR,4) == 0) {input[0] = HWREGB(UART0_BASE);HWREGB(UART0_BASE) = input[0];}
CC1310直接操作寄存器编程相关推荐
- 嵌入式学习笔记——使用寄存器编程操作GPIO
使用寄存器编程操作GPIO 前言 GPIO相关的寄存器 GPIO 端口模式寄存器 (GPIOx_MODER) (x = A..I) 位操作 GPIO 端口输出类型寄存器 (GPIOx_OTYPER) ...
- 寄存器映射与直接操作寄存器
一.存储器映射与重映射 存储器本身不具有地址信息,它的地址是由芯片厂商或用户分配,给物理存储器分配逻辑地址的过程就称为存储器映射,通过这些逻辑地址就可以访问到相应的存储器的物理存储单元.如果给存储器再 ...
- STM32寄存器的简介、地址查找,与直接操作寄存器
什么是寄存器 提到单片机,就不得不提到寄存器.根据百度百科介绍,寄存器是中央处理器内的组成部分.寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令.数据和地址. 简单来说,寄存器就是存放东西的东西 ...
- 记录学习(转载) STM32---程序如何在内部运行寄存器编程的理解
作者:王犀牛 链接:https://www.zhihu.com/question/26562480/answer/33433568 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载 ...
- STM32---程序如何在内部运行寄存器编程的理解
作者:王犀牛 链接:https://www.zhihu.com/question/26562480/answer/33433568 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载 ...
- iOS多线程拾贝------操作巨人编程
iOS多线程拾贝------操作巨人编程 多线程 基本 实现方案:pthread - NSThread - GCD - NSOperation Pthread 多平台,可移植 c语言,要程序员管理生命 ...
- 字符设备驱动高级篇5——静态映射表、动态映射结构体方式操作寄存器
以下内容源于朱有鹏<物联网大讲堂>课程的学习整理,如有侵权,请告知删除. 一.静态映射表建立过程分析 1.建立映射表的三个关键部分 (1)映射表描述 具体物理地址和虚拟地址的值相关的宏定义 ...
- linux系统编程界面实验报告,操作系统实验报告-Linux操作使用编程.doc
操作系统实验报告-Linux操作使用编程 实 验 报 告( 2012/ 2013 学年 第二学期) 课程名称操 作 系 统A实验名称Linux操作.使用.编程实验时间2013年 5 月 6日指导单位计 ...
- stm32 BKP寄存器操作[操作寄存器+库函数]
BKP是"BACKUP"的缩写,stm32f103RCTE的内部配备了10个16位宽度的BKP寄存器.在主电源切断或系统产生复位时间时,BKP寄存器仍然可以在备用电源的支持下保持其 ...
- keil 4c语言读写寄存器,【STM32单片机学习】第四课:GPIO控制LED(用寄存器编程)
[朱老师课程总结] 第一部分.章节目录 第二部分.章节介绍 3.5.1.STM32的GPIO模块数据手册详解1 本节讲解STM32数据手册中GPIO模块相关的部分,主要是GPIO的各类模式及其配置方法 ...
最新文章
- 电脑ip地址设置_关于电脑的远程开机(唤醒)
- linux 查找清理大文件
- 手把手教你安装鸿蒙和运行第一个Demo(js)版
- Web Socket/Stomp——整合Spring Session【Header Token模式】解决方案
- 大横琴科技联合阿里云发布全国首个跨境服务创新平台琴澳通
- dy96 .pw cc 05.php,05.php · 熟悉的陌生/php - Gitee.com
- python 有趣的爬虫_Python有趣|微博榜单爬虫,尽知天下事
- zabbix3.0 安装方法
- pdffactory 打印字体_PdfFactory Pro(PDF虚拟打印软件) 中文版分享
- android模拟win98中文版,Win98模拟器
- 论文相关------如何在论文写作中使用拉丁文简写
- 魔兽实名好友怎么显示服务器,魔兽世界实名好友跨服组队详细解析
- js传参中文格式不对乱码
- 以互联网公司的经验告诉大家,架构师究竟比高级开发厉害在哪?
- 使用H5开发移动端app
- 南京邮电大学java实验报告_南京邮电大学java第二次实验报告
- 剑指Offer —— 面试题(十六)
- 【一句日历】2019年4月
- BAT 大企内部面试题泄密
- Springboot 启动命令中–spring.config.location不生效问题
热门文章
- 【转】当我们说“区块链是无需信任的”,我们的意思是
- 《大型网站技术架构-核心原理与案例分析》(李智慧 著)第3章-大型网站核心架构要素
- 回归预测 | MATLAB实现NCA(近邻成分分析)多输入单输出
- macbook打开网页慢解决办法
- Your application has presented a UIAlertController的解决方法
- 桌面图标小箭头去除方法
- 电脑计算机c盘缓存清理,怎么清除电脑C盘缓存
- ubuntu上传代码文件到github
- 商业力:开发者一站式服务
- YouTube 深度神经网络在推荐系统上的应用