ImageVerifierCode 换一换
格式:DOC , 页数:41 ,大小:181KB ,
资源ID:8970936      下载积分:10 金币
验证码下载
登录下载
邮箱/手机:
图形码:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/8970936.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请。


权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4009-655-100;投诉/维权电话:18658249818。

注意事项

本文(arm_实验c语言代码.doc)为本站上传会员【xrp****65】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

arm_实验c语言代码.doc

1、 2.8_C语言程序实验 #define uint8 unsigned char #define uint32 unsigned int #define N 100 uint32 sum; // 使用加法运算来计算1+2+3+...+(N-1)+N的值。(N>0) void Main(void) { uint32 i; sum = 0; for(i=0; i<=N; i++) { sum += i; } while(1); } 2.9_C语言调用汇编程序实验 #define u

2、int8 unsigned char #define uint32 unsigned int extern uint32 Add(uint32 x, uint32 y); uint32 sum; // 调用汇编程序Add实现加法运算 void Main(void) { sum = Add(555, 168); while(1); } 2.10_GPIO输出控制实验1 /**************************************************************************** * 文

3、件名:main.c * 功 能:蜂鸣器控制。对蜂鸣器B1进行控制,采用软件延时方法。 * 使用I/O口直接控制,采用灌电流方式。 * 说 明:将跳线器JP22短接,JP20断开。 ****************************************************************************/ #include "config.h" #define BEEPCON 0x00000080 // P0.7引脚控制B1,低电平蜂鸣 /***************************************

4、 * 名 称:DelayNS() * 功 能:长软件延时。 * 入口参数:dly 延时参数,值越大,延时越久 * 出口参数:无 ****************************************************************************/ void DelayNS(uint32 dly) { uint32 i; for(; dly>0; dly--) { for(i=0; i<5000; i++);

5、 } } /**************************************************************************** * 名 称:main() * 功 能:控制蜂鸣器蜂鸣。 ****************************************************************************/ int main(void) { PINSEL0 = 0x00000000; // 设置管脚连

6、接GPIO IO0DIR = BEEPCON; // 设置I/O为输出 while(1) { IO0SET = BEEPCON; // BEEPCON = 1 DelayNS(15); IO0CLR = BEEPCON; // BEEPCON = 0 DelayNS(15); } return(0); } 2.11_GPIO输出控制实验2 / /*******************

7、 * 文 件 名:main.c * 功 能:LED显示控制。 * 通过GPIO直接控制8个LED产生流水灯效果 * 说 明:将跳线JP23全部短接,JP15跳线全部断开。 * 这个警告可忽略,C2892E: signed constant overflow ****************************************************************************/ #in

8、clude "config.h" #define LED1 1<<16 // P2.16 #define LED2 1<<17 // P2.17 #define LED3 1<<18 // P2.18 #define LED4 1<<19 // P2.19 #define LED5 1<<20 // P2.20 #define LED6 1<<21 // P2.21 #define LED7 1<<22 // P2.22 #de

9、fine LED8 1<<23 // P2.23 #define LEDCON 0x00ff0000 const uint32 DISP_TAB[8] = { 0xff01ffff, 0xff02ffff, 0xff04ffff, 0xff08ffff, 0xff10ffff, 0xff20ffff, 0xff40ffff, 0xff80ffff}; /*************************************************************************

10、 * 名 称:DelayNS() * 功 能:长软件延时 * 入口参数:dly 延时参数,值越大,延时越久 * 出口参数:无 ****************************************************************************/ void DelayNS(uint32 dly) { uint32 i; for(; dly>0; dly--) { for(i=0; i<5000; i++); } }

11、 /**************************************************************************** * 名 称:main() * 功 能:根据表DISP_TAB来控制LED显示。 ****************************************************************************/ int main(void) { uint8 i; /* PINSEL2使用启动代码的默认配置,切勿任意配置PINSEL2,否则总线会受到干扰 */

12、 IO2DIR = LEDCON; // 配置LED控制I/O方向 while(1) { for(i=0; i<8; i++) { IO2CLR = DISP_TAB[i]; // 输出LED显示数据 DelayNS(10); // 延时 IO2SET = 0xffffffff; } } return(0); } 2

13、12_GPIO输入实验 **************************************************************************** * 文 件 名:main.c * 功 能:读取I/O引脚值,并输出控制蜂鸣器。 * 使用I/O口输入方式对P0.20口进行扫描,对蜂鸣器控制。 * 说 明:将跳线器JP9、JP22短接,JP20断开。按下KEY1观察BUZZER效果。 **********************************************************************

14、/ #include "config.h" #define BEEPCON 1<<7 // P0.7引脚控制B1,低电平蜂鸣 #define KEY 1<<20 // 定义按键 /**************************************************************************** * 名 称:main() * 功 能:读取P0.20口的值,并输出控制蜂鸣器B1。 *********************************************

15、/ int main(void) { uint32 i; PINSEL0 = 0x00000000; // 设置管脚连接GPIO IO0DIR = BEEPCON; // 设置B1控制口为输出,其它I/O为输入 while(1) { if( (IO0PIN&KEY)!=0 ) { IO0SET = BEEPCON; } else

16、 { IO0CLR = BEEPCON; } for(i=0; i<1000; i++); } return(0); } 2.13_存储器重映射实验/**************************************************************************** * 文 件 名:main.c * 功 能:将存储器重映射到片内RAM(0x40000000~0x4000003F),然后更改 * 0x40000000~0x

17、4000003F的内容。 * 说 明:观察0x00000000~0x0000003F地址上的数据有何变化 ****************************************************************************/ #include "config.h" #define VECTOR_RAM ((unsigned char *) 0x40000000) /****************************************************************************

18、 名 称:main() * 功 能:存储器重映射。 ****************************************************************************/ int main(void) { uint8 i; uint8 *addr; MEMMAP = 0x02; // 中断向量从静态RAM重映射(用户RAM模式) addr = VECTOR_RAM; for(i=0; i<64; i++) // 用0x55填充0x40000000~0x4000003F

19、 { *addr = 0x55; addr++; } addr = VECTOR_RAM; for(i=0; i<64; i++) // 用0xAA填充0x40000000~0x4000003F { *addr = 0xAA; addr++; } MEMMAP = 0x00; // 中断向量从Boot Block重映射(Boot装载程序模式) while(1); return(0); }

20、 2.14_外部中断实验1/**************************************************************************** * 文 件 名:main.c * 功 能:使用外部中断3进行B1的控制,每当有一次中断时,即取反B1控制口, * 使用非向量中断方式。 * 说 明:将跳线器JP9、JP22短接,JP20断开。按下KEY1观察BUZZER效果。 **************************************************************************

21、/ #include "config.h" #define BEEPCON 1<<7 // P0.7引脚控制B1,低电平蜂鸣,1<<7 等价于 0x80 /**************************************************************************** * 名 称:IRQ_Eint3() * 功 能:外部中断EINT3服务函数,取反B1控制口。 * 入口参数:无 * 出口参数:无 PINSEL0 是选择引脚功能 IO0DIR 是选择引脚 做 输入 还是做 输出功能 IO0SET

22、 是让引脚输出1 IO0CLR 是让引脚输出0 ****************************************************************************/ void __irq IRQ_Eint3(void) { uint32 i; i = IO0SET; // 读取当前B1控制值 if( (i&BEEPCON)==0 ) // 控制B1输出取反 { IO0SET = BEEPCON; } els

23、e { IO0CLR = BEEPCON; } /* 等待外部中断信号恢复为高电平(若信号保持为低电平,中断标志会一直置位) */ while( (EXTINT&1<<3)!=0 ) { EXTINT = 1<<3; // 清除EINT3中断标志,1<<3 等价于 0x08 } VICVectAddr = 0; // 向量中断结束 } /****************************

24、 * 名 称:main() * 功 能:初始化外部中断3(EINT3)为非向量中断,并设置为电平触发模式,然后等待外部中断。 * 说 明:在STARTUP.S文件中使能IRQ中断(清零CPSR中的I位)。 ****************************************************************************/ int main(void) { IRQEnable();

25、 // 开IRQ中断 PINSEL1 = 3<<8; // 设置管脚连接,P0.20设置为EINT3 IO0DIR = BEEPCON; // 设置B1控制口为输出,其它I/O为输入 /* 打开EINT3中断(使用非向量IRQ) */ VICIntSelect = 0x00000000; // 设置所有中断分配为IRQ中断 VICDefVectAddr = (int)IRQ_Eint3; /

26、/ 设置中断服务程序地址 EXTMODE = 0x00; // 设置EINT3中断为电平触发模式 EXTINT = 1<<3; // 清除EINT3中断标志 1000 VICIntEnable = 1<<17; // 使能EINT3中断,EINT3在Bit17上 while(1); // 等待中断 return(0); } 2.15_外部存储器接口实验1 /************************************

27、 * 文 件 名:main.c * 功 能:对SST39VF160进行全片擦除,然后写两字节数据到芯片0地址,再读出来校验, * 若校验通过则蜂鸣器响一声,否则不断地蜂鸣报警。 * 说 明:无。 ****************************************************************************/ #include "config.h" #define BEEPCON 1<<7 // P0.7引脚控制B1,

28、低电平蜂鸣 #define FLASH_ADDR 0x80000000 // FLASH的起始地址(分配为Bank1块) /* 转换地址。将要发送给SST39VF160的地址值进行转换,以便于LPC2210输出。*/ /* 由于SST39VF160的A0是与LPC2210的A1相连,所以addr要左移1位。 */ #define GetAddr(addr) (volatile uint16 *)(FLASH_ADDR|(addr<<1)) /******************************************************

29、 * 名 称:DelayNS() * 功 能:长软件延时。 * 入口参数:dly 延时参数,值越大,延时越久 * 出口参数:无 ****************************************************************************/ void DelayNS(uint32 dly) { uint32 i; for(; dly>0; dly--) { for(i=0; i<5000; i++); } } /*

30、 * 名 称:WordProgram() * 功 能:半字(16位)数据编程。 * 入口参数:Addr 编程地址(SST39VF160内部地址) * Data 编程数据 * 出口参数:返回TRUE表示操作成功,返回FALSE表示操作失败 ****************************************************************************/ ui

31、nt8 WordProgram(uint32 Addr, uint16 Data) { volatile uint16 *ip; uint16 temp1,temp2; ip = GetAddr(0x5555); // 转换地址0x5555 ip[0] = 0xaaaa; // 第一个写周期,地址0x5555,数据0xAA ip = GetAddr(0x2aaa); ip[0] = 0x5555; // 第二个写周期,地址0x2aaa,数据0x55 ip = GetAddr(0x5555); ip[

32、0] = 0xa0a0; // 第三个写周期,地址0x5555,数据0xA0 ip = (volatile uint16 *)(FLASH_ADDR|(Addr&0x1FFFFF)); *ip = Data; // 第四个写周期,地址Addr,数据Data while (1) // 等待操作完成 (若编程操作没有完成,每次读操作DQ6会跳变) { temp1 = *ip; temp2 = *ip; if (temp1 == temp2)

33、 { if (temp1 != Data) { return(FALSE); } else { return(TRUE); } } } return(TRUE); } /***************************************************************************

34、 * 名 称:ChipErase() * 功 能:芯片全片擦除。 * 入口参数:无 * 出口参数:返回TRUE表示操作成功,返回FALSE表示操作失败 ****************************************************************************/ uint8 ChipErase(void) { volatile uint16 *ip; uint16 temp1,temp2; ip = GetAddr(0x5555); ip[0] = 0xaaaa;

35、 // 第一个写周期,地址0x5555,数据0xAA ip = GetAddr(0x2aaa); ip[0] = 0x5555; // 第二个写周期,地址0x2aaa,数据0x55 ip = GetAddr(0x5555); ip[0] = 0x8080; // 第三个写周期,地址0x5555,数据0x80 ip = GetAddr(0x5555); ip[0] = 0xaaaa; // 第四个写周期,地址0x5555,数据0xAA ip = GetAddr(0x2aaa); ip[0] = 0x555

36、5; // 第五个写周期,地址0x2aaa,数据0x55 ip = GetAddr(0x5555); ip[0] = 0x1010; // 第六个写周期,地址0x5555,数据0x10 while (1) // 等待操作完成 (若擦除操作没有完成,每次读操作DQ6会跳变) { temp1 = *ip; temp2 = *ip; if (temp1 == temp2) { if (temp1 != 0xffff)

37、 { return(FALSE); } else { return(TRUE); } } } return(TRUE); } /**************************************************************************** * 名 称:main() * 功 能:SST39VF160擦除、编程操作

38、 ****************************************************************************/ int main(void) { uint8 i; uint8 err = 0; volatile uint16 *addr; PINSEL0 = 0x00000000; // 设置管脚连接GPIO IO0DIR = BEEPCON; // 设置I/O为输出 ChipErase(); // FLASH全片擦除

39、 // 校验是否真正擦除。若发现有非0xFFFF的存储单元,设置err=1 addr = (volatile uint16 *)FLASH_ADDR + 0; for(i=0; i<100; i++) { if(0xFFFF != (*addr)) err = 1; addr++; } WordProgram(0x0, 0x55AA); // 向FLASH的0地址写入0x55AA addr = (volatile uint16 *)FLAS

40、H_ADDR + 0; if(0x55AA != (*addr)) err = 1; // 读出校验,若数据错误则设置err=1 if(0==err) { IO0CLR = BEEPCON; // BEEPCON = 0 DelayNS(20); IO0SET = BEEPCON; // BEEPCON = 1 DelayNS(20); } else { while(1)

41、 { IO0CLR = BEEPCON; // BEEPCON = 0 DelayNS(10); IO0SET = BEEPCON; // BEEPCON = 1 DelayNS(10); } } while(1); return(0); } 2.16_定时器实验1 /***********************************************

42、 * 文 件 名:main.c * 功 能:使用定时器0实现1秒定时,控制蜂鸣器蜂鸣。(查询方式) * 说 明:JP22跳线短接,JP20跳线断开。 ****************************************************************************/ #include "config.h" #define BEEPCON 1<<7 // P0.7引脚控制B1,低电平蜂鸣 /*******************************

43、 * 名 称:Time0Init() * 功 能:初始化定时器0,定时时间为1S。 * 入口参数:无 * 出口参数:无 ****************************************************************************/ void Time0Init(void) { /* Fcclk = Fosc*4 = 11.0592MHz*4 = 44.2368MHz Fpclk = Fcclk/4 = 44.2368M

44、Hz/4 = 11.0592MHz */ T0PR = 99; // 设置定时器0分频为100分频,得110592Hz T0MCR = 0x03; // 匹配通道0匹配中断并复位T0TC T0MR0 = 110592; // 比较值(1S定时值) T0TCR = 0x03; // 启动并复位T0TC T0TCR = 0x01; } /***********************************************************************

45、 * 名 称:main() * 功 能:初始化I/O及定时器,然后不断的查询定时器中断标志。当定时时间到达时,取反BEEPCON * 控制口。 ****************************************************************************/ int main(void) { PINSEL0 = 0x00000000; // 设置管脚连接GPIO IO0DIR = BEEPCON; // 设置I/O为输出 Time0In

46、it(); // 初始化定时器0 while(1) { while( (T0IR&0x01) == 0 ); // 等待定时时间到 T0IR = 0x01; // 清除中断标志 if( (IO0SET&BEEPCON) == 0 ) { IO0SET = BEEPCON; } else { IO0CLR = BEEPCON;

47、 } } return(0); } 2.17_UART实验1 /**************************************************************************** * 文 件 名:main.c * 功 能:向串口发送数据。 * 说 明:使用外部11.0592MHz晶振,根据CONFIG.H文件配置,Fpclk=11.0592MHz; * 通讯波特率115200,8位数据位,1位停止位,无奇偶校验。 ***************

48、/ #include "config.h" #define UART_BPS 115200 // 定义通讯波特率 uint8 const SEND_STRING[] = "Hello World!\r\n"; /**************************************************************************** * 名 称:DelayNS() * 功 能:长软件延时 * 入口参数

49、dly 延时参数,值越大,延时越久 * 出口参数:无 ****************************************************************************/ void DelayNS(uint32 dly) { uint32 i; for(; dly>0; dly--) { for(i=0; i<5000; i++); } } /************************************************************

50、 * 名 称:UART0_Ini() * 功 能:初始化串口0。设置为8位数据位,1位停止位,无奇偶校验,波特率为115200 * 入口参数:无 * 出口参数:无 ****************************************************************************/ void UART0_Init(void) { uint16 Fdiv; U0LCR = 0x83; // DLAB = 1,可设置波特率 Fdiv = (Fpclk / 16) /

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服