IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> MSP432P 汇编,C语言点灯 -> 正文阅读

[C++知识库]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--);
    }
}

?

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-09-04 00:51:43  更:2022-09-04 00:55:28 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 7:50:20-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码