当前位置: 首页 > news >正文

MSP432P 汇编,C语言点灯

目录

一、查看芯片手册

1.1、寄存器DIR

1.2、寄存器OUT

1.3、寄存器地址

二、汇编

2.1、用到指令

2.2、完整代码

三、c语言​​​​​​​

一、查看芯片手册

led接在P0^1口,高电平亮

1.1、寄存器DIR

 共8位,对应P1口的8个IO,设置其工作模式,输入输出

输入0,输出1

使用到0口,写入0x01即可

1.2、寄存器OUT

共8位,对应P1口的8个IO,设置其输出高低电平

低电平0,高电平1

使用到0口,写入0x01即可输出高电平

1.3、寄存器地址

 可以看出P1口的寄存器DIR,OUT地址分别是

P1DIR:0x40004C04

P1OUT:0x40004C02

 可以看出每个寄存器占用2字节空间,也就是16位,我们只使用到了低8位

二、汇编

2.1、用到指令

EXPORT:表明该符号可以被外部模块使用,类似于C中的extern功能。

IMPORT:表明要调用的函数为外部文件定义

STRH:16位数据放入寄存器中

注:写入只能用STRH指令,不能用STR(因为是16位数据,用STR是32,会超出越界)

2.2、完整代码

;主函数入口
main PROC
	EXPORT  main
	;设置P1^0为输出
	LDR     R4, =0x01
	LDR     R5, =0x40004C04
	STRH	R4,[R5]
	ENDP

;led闪烁
led PROC
	;打开LED,输出高电平,并延时
	LDR     R4, =0x01
	LDR     R5, =0x40004C02
	STRH	R4,[R5]
	LDR     R0, =delay
    BLX     R0
	
	;关闭LED,输出低电平,并延时
	LDR     R4, =0x00
	LDR     R5, =0x40004C02
	STRH	R4,[R5]
	LDR     R0, =delay
    BLX     R0
	
	;跳转回LED函数,实现循环
	B led
	ENDP

;延时函数
delay PROC
	LDR R2, =500000
	LDR R3, =0x0
	ENDP
delay_loop PROC
	SUB R2, R2, #1 ;每次R2减一
	CMP R2, R3 ;比较
	BNE delay_loop ;不相等,跳转回delay_loop
	BX LR	;函数调用返回
	ENDP	

三、c语言

地址是32位,存储是16位

所以指针类型也必须是16位的,32位会越界访问(导致程序不能正常运行)

一个指针变量占用4字节内存空间(无论是什么类型的指针变量都是4,类型只决定可以访问的内存空间是多少字节,例如:char*只能访问1字节内存,int*访问4个连续的内存空间4字节)

每一个地址空间是1字节内存单元

int main(void)
{
    volatile uint32_t i;
	volatile uint16_t* QWQW = (volatile uint16_t *)0x40004c02;
	volatile uint16_t* QWQW1 = (volatile uint16_t *)0x40004c04;
	*QWQW1=0x01;//设置为输出

    while(1)
    {

		*QWQW = 0x01; //点亮
        for(i=100000; i>0; i--);//延时
		*QWQW = 0x00; //熄灭
	    for(i=100000; i>0; i--);
    }
}

 

相关文章:

  • Tomcat部署及优化
  • Kubernetes中Pod容器的使用
  • BERT模型解析
  • Springboot整合dubbozookeeper为注册中心
  • Spark的部署与使用
  • 目标检测——关键点检测学习记录(二):人体骨骼点检测——自顶向下
  • C++----类型转换
  • 机器学习笔记之线性分类——高斯判别分析(二)最优参数求解
  • 爬取头像的程序不好用了?那就再重新做一份咯
  • 常见的三种池化操作:MaxPool2d/AdaptiveMaxPool2d/AvgPool2d/AdaptiveAvgPool2d...(Pytorch)
  • Java 面试八股文 —— SSM 框架常见面试题
  • Tomcat的安装与优化
  • 第三章 神经网络——什么是神经网路激活函数3层神经网络的简单实现手写数字识别
  • 隧道调频广播覆盖-天线分布式部署是隧道调频广播无线覆盖系统设备介绍
  • 2022-8-31 第七小组 学习日记 (day55)JSP
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • 自己简单写的 事件订阅机制
  • 2017-08-04 前端日报
  • CSS中外联样式表代表的含义
  • mysql外键的使用
  • PAT A1050
  • XForms - 更强大的Form
  • 搞机器学习要哪些技能
  • 构建工具 - 收藏集 - 掘金
  • 检测对象或数组
  • 力扣(LeetCode)56
  • 马上搞懂 GeoJSON
  • 无服务器化是企业 IT 架构的未来吗?
  • 学习JavaScript数据结构与算法 — 树
  • # C++之functional库用法整理
  • (附源码)ssm航空客运订票系统 毕业设计 141612
  • (原)本想说脏话,奈何已放下
  • .gitignore文件设置了忽略但不生效
  • .L0CK3D来袭:如何保护您的数据免受致命攻击
  • .NET Core 中插件式开发实现
  • .NET Core中的去虚
  • .NET企业级应用架构设计系列之技术选型
  • .vimrc php,修改home目录下的.vimrc文件,vim配置php高亮显示
  • .vue文件怎么使用_vue调试工具vue-devtools的安装
  • .vue文件怎么使用_我在项目中是这样配置Vue的
  • @EventListener注解使用说明
  • @RequestMapping用法详解
  • @在php中起什么作用?
  • [ 第一章] JavaScript 简史
  • [\u4e00-\u9fa5] //匹配中文字符
  • [Angular] 笔记 8:list/detail 页面以及@Input
  • [C/C++]_[初级]_[关于编译时出现有符号-无符号不匹配的警告-sizeof使用注意事项]
  • [EULAR文摘] 利用蛋白组学技术开发一项蛋白评分用于预测TNFi疗效
  • [go] 策略模式
  • [HDU]2161Primes
  • [I2C]I2C通信协议详解(二) --- I2C时序及规格指引
  • [LeetCode] 197. 上升的温度
  • [Linux]----文件操作(复习C语言+文件描述符)
  • [Luogu 3958] NOIP2017 D2T1 奶酪
  • [MSSQL]GROUPING SETS,ROLLUP,CUBE初体验