收藏 分销(赏)

电赛MSP430f5438模块函数.docx

上传人:xrp****65 文档编号:6045165 上传时间:2024-11-26 格式:DOCX 页数:9 大小:31.20KB 下载积分:10 金币
下载 相关 举报
电赛MSP430f5438模块函数.docx_第1页
第1页 / 共9页
电赛MSP430f5438模块函数.docx_第2页
第2页 / 共9页


点击查看更多>>
资源描述
目录 1.初始化时钟函数 1 2.DMA传输初始化 2 3.看门狗定时器中断函数 3 键入章标题(第 1 级) 4 键入章标题(第 2 级) 5 键入章标题(第 3 级) 6 1. 初始化时钟函数 /****************************************************************************** * 函数名:void Init_Clk(void) * 功 能:初始化时钟 * 参 数:无 * 返回值:无 ******************************************************************************/ void Init_Clk(void) { UCSCTL1 = DCORSEL_2; // 设置DCO范围 ,fDCOCLK/4 UCSCTL3 |= SELREF_2; // 选择FLL参考源自REFO UCSCTL4 = SELM_3 + SELA_2 + SELS_4; // 配置 MCLK = DCOC,SMCLK =DCODIV,ACLK=REFO while (SFRIFG1 & OFIFG) // 清除 OFIFG,and XT1OFFG ,DCOFFG { UCSCTL7 &= ~( XT1LFOFFG + DCOFFG); SFRIFG1 &= ~OFIFG; } } WDTCTL = WDTPW + WDTHOLD; // 停止看门狗 2. DMA传输初始化 /****************************************************************************** * 函数名:void DMA_init(void) * 功 能:DMA传输初始化 * 参 数:无 * 返回值:无 ******************************************************************************/ void DMA_init(void) { DMACTL0 = DMA0TSEL_0; // DMA0通道软件触发 // 重复单次传输字传输 目的地址加一 DMA0CTL = DMADT_4 + DMASRCINCR_3+DMADSTBYTE+DMASRCBYTE; DMA0SA = (long *) String; // 源地址数组 DMA0DA = (long *) &P10OUT; // 初始目的地址P2口 DMA0SZ = sizeof(String); DMA0CTL |= DMAEN; // DMA使能 } 3. 看门狗定时器中断函数 /****************************************************************************** * 函数名:__interrupt void WDT_ISR(void) * 功 能:看门狗定时器中断函数 * 实现 DMA 传输数据的刷新 * 参 数:无 * 返回值:无 ******************************************************************************/ #pragma vector=WDT_VECTOR __interrupt void WDT_ISR(void) { _NOP(); DMA0CTL |= DMAREQ; // 触发DMA传输 } 4. FLASH 的擦除 /****************************************************************************** * 函数名:void FERASE(unsigned int address) * 功 能:FLASH 的擦除 * 参 数:address--将要擦除的FLASH地址 * 返回值:无 ******************************************************************************/ void FERASE(unsigned int address) { unsigned int *Erase_address; Erase_address = (unsigned int *)address; FCTL1 = FWKEY + ERASE; FCTL3 = FWKEY; *Erase_address = 0; FCTL1 = FWKEY; FCTL3 = FWKEY + LOCK; } 5. FLASH 的数据写入 /****************************************************************************** * 函数名:void FWRITE(unsigned int address, * unsigned char* data,unsigned int length) * 功 能:FLASH 的数据写入 * 参 数:address --将要写入的FLASH地址 * *data --写入的数据指针 * length --将要写入数据的长度 * 返回值:无 ******************************************************************************/ void FWRITE(unsigned int address, unsigned char* data,unsigned int length) { unsigned int i; unsigned char* Wr_Addr; Wr_Addr =(unsigned char*)address; FCTL1 = FWKEY + WRT; // Set WRT bit for write operation FCTL3 = FWKEY; for(i=0;i<length;i++) { *Wr_Addr= data[i]; Wr_Addr++; } FCTL1 = FWKEY; FCTL3 = FWKEY + LOCK; } 6. 延时约1ms的时间 /****************************************************************************** 函数名:void delay_1ms(void) 功 能:延时约1ms的时间 参 数:无 返回值:无 ******************************************************************************/ void delay_1ms(void) { uchar i; for(i = 150;i > 0;i--) _NOP(); } 7. 延时N个ms的时间 /****************************************************************************** 函数名:void delay_Nms(uint n) 功 能:延时N个ms的时间 参 数:无 返回值:无 ******************************************************************************/ void delay_Nms(uint n) { uint i = 0; for(i = n;i > 0;i--) delay_1ms(); } 一、简介 1.1CPU: 16-bit RISC 除program-flow指令外所有指令都在寄存器和7种源操作数寻址方式及4种目的操作数合作下执行 16个寄存器,register-to-register指令执行时间是一个CPU时钟 R0 程序计数器寄存器20-bit R1 堆栈指针20-bit R2 状态寄存器16-bit R3 不变的产生器 R4~R15 通用寄存器 1.2指令集: 51指令 3格式 7中寻址方式 附加指令 1.3操作模式 6个可软件设置的LOW-POWER模式 一个中断事件可以唤醒5个模式中的任何一个,响应请求,并从中断程序中返回原模式 Mode ACTIVE DISABLED Active mode (AM) 所有时钟ACTIVE Low-power mode 0 (LPM0) ACLK SMCLK FLL CPU MCLK LPM1 ACLK SMCLK CPU FLL MCLK LPM2 DCO发生器 ACLK CPU MCLK FLL DCOCLK LPM3 ACLK CPU MCLK FLL DCOCLK DC发生器 LPM4 晶振关闭 完整数据保留 LPM5 内部调节器关闭 无数据保留 通过RST和IO唤醒 1.4中断矢量 地址:FFFF~FF80H 1.5 SFR 处于最低地址空间 可以进行字访问和字节访问 1.6存储 256K闪存空间 64K程序存储器 16KRAM 512BBSL程序装载器用于编程存储器串连接口 1.7外围 时钟:支持统一的时钟系统UCS包括: 32K手表晶振(XT1 低频模式) 内部低频振荡器VLO 内部平衡低频振荡器REFO 内部集成数字控制器DCO 高频晶振(XT1高频模式 or XT2) FLL锁频环连同一个数字调节器使得DCO构成一个多倍可编程的手表晶振 时钟信号:ACLK 32K手表晶振、高频晶振、VLO、REFO、DCO MCLK CPU用,来源同ACLK SMCLK 用于外围来源同ACLK 多分频ACLK 电源管理模块(PMM) 包括一个集成的PMM电压调节器,提供核心电压设备和包含可编程的产出水平,来提供电力的优化。 还包括SVS和SVM电路即降压保护,可用来产生内部复位信号 实时时钟RTC:用来作为32位的多用计数器或实时时钟,计数模式下,RTC有两个独立的8位计数器可被级联成16位的计数器 ADC12_A: 支持一个快速的12位的AD转换器 12位的SAR核心、简单选择控制、参考发生器、16字的BUFF可在CPU不参与的情况下允许16个独立的ADC采样 N=选择的时钟频率/波特率=UBR1x(整数部分的高位)+UBR0x(整数部分的低位)+小数部分(小数部分=调整因子个数/8) 例如:串口配置选用时钟为32768KHz,波特率为9600,则N=32768/9600=3.41。所以,UBR1x=0,UBR0x=3,调整因子个数/8=0.41 =>调整因子个数=3 =>UMCTLx=01010010(原则是调整因子"1"分布要均匀)。 1.8系统复位及初始化 掉电复位(BOR)》上电复位(POR)》PUC Rst/nmi配置成复位状态,I/O口恢复到输入状态、状态寄存器复位、看门狗到看门狗状态 1.9中断源:系统复位 可屏蔽中断、 不可屏蔽(系统不可屏蔽中断和用户不可屏蔽中断) 二.USC 5个时钟源: XT1CLK:有低频(LF)和高频(HF)模式,低频32768HZ的手表晶振、标准晶振、谐振器或者外部的4M~32MHZ的晶振 VLOCLK:内部10KHZ低功率、低频振荡器 REFOCLK:内部32768HZ平衡的、低频参考振荡器、作为FLL的参考晶振 DCOCLK:内部数字控制振荡器,可被FLL稳定 XT2CLK:可选的高频振荡源,可选用标准晶振、谐振器或来自外部的4M~40MHZ的晶振 3个时钟信号 ACLK:辅助时钟,可软件设置为XT1CLK, REFOCLK, VLOCLK, DCOCLK,DCOCLKDIVXT2CLK,DCOCLKDIV is the DCOCLK frequency divided by 1, 2, 4,8, 16, or 32 within the FLL block.用于外围模块 MCLK:主时钟,可软件设置为XT1CLK, REFOCLK, VLOCLK, DCOCLK,DCOCLKDIVXT2CLK, DCOCLKDIV is the DCOCLK frequency divided by 1, 2, 4,8, 16, or 32 within the FLL block.用于CPU和系统 SMCLK:子时钟,可软件设置为XT1CLK, REFOCLK, VLOCLK, DCOCLK,DCOCLKDIVXT2CLK, DCOCLKDIV is the DCOCLK frequency divided by 1, 2, 4,8, 16, or 32 within the FLL block.用于外围独立的模块。 USC系统默认配置: XT1在低频模式下作为振荡源给XT1CLK、XT1CLK提供给ACLK DCOCLKDIV提供给MCLK和SMCLK FLL使能,XT1CLK作为FLL参考时钟FLLREFCLK XIN和XOUT设为普通I/O口功能、XT1处于关闭状态直到XT1操作配置该I/O口 XT2IN和XT2OUT同样被配成普通I/O口,XT2关闭 REFO: 32768HZ提供一个稳定的参考晶振为FLLREFCLK,它联合FLL在不需要晶体的情况下可提供范围灵活的系统时钟设置,REFO不工作时不耗电!if the REFO oscillator is not used to source MCLK, SMCLK. or FLLREFCLK. The OSCOFF bit disables REFO for LPM4. XT1: LF模式下支持一个极低功耗的32768MHZ的手表晶振,内部XCAP为其提供下载电容,也可通过外加电容 HF模式下需要加外部电容,通过XT1DRIVE设置驱动器力度,以便减少功耗;XT1BYPASS设置可与外部晶振信号一起使用,此时处于休眠状态; XT2:相同于XT1的HF模式 DCO:一般配合FLL一起使用 XT2CLK (if available) The value of n is defined by the FLLREFDIVx (n = 1, 2, 4, 8, 12, or 16). default is n = 1. fDCOCLK = D×(N + 1) ×(fFLLREFCLK /n) fDCOCLKDIV = (N + 1) × (fFLLREFCLK /n) FLL: 连续不断的把一个频率计分器相加或相减 寄存器: UCSCTL0, UCSCTL1,对DCO的设置寄存器 UCSCTL2,FLL分频、倍乘N UCSCTL3,对FLL参考晶振的选择、分频FLLREFCLK UCSCTL4,设置ACLK、MCLK、SMCLK时钟来源, UCSCTL5,设置外部ACLK、ACLK、MCLK、SMCLK分频 UCSCTL6,对XT1、XT2的允许范围,旁路,开关 UCSCTL7,XT2、XT1、DC0时钟中断错误标志 UCSCTL8,MODOSC、ACLK、SMCLK、MCLK条件响应请求标志 附注:DCO设置: fDCOCLK = D×(N + 1) ×(fFLLREFCLK /n) fDCOCLKDIV = (N + 1) × (fFLLREFCLK /n) = fDCOCLK/D UCSCTL1,DCORSEL 设置DCOCLK的频率范围,在频率范围内可满足其参考时钟源的倍频,若超出范围,则用FLLN无法完成倍频 DISMOD 使能调整 UCSCTL2,FLLD 设置D的值,(1、2、4、8……) FLLN 设置N的值,在DCOCLK的频率范围内才可以实现对其参考晶振的倍频 UCSCTL3,SELREF,选择参考晶振 FLLREFDIV对参考晶振进行分频(1/2/4/8……) 三、 看门狗 看门狗功能和间隔定时功能 看门狗中断标志位WDTIFG; 看门狗中断使能WDTIE; WDTCTL 看门狗时钟(00为SMCLK)选择、模式选择、间隔设定 四、 通用串口 两类串口模块:USCI_Ax——UART\IrDA\SPI USCI_Bx——I2C\SPI 4.1(UART模式) 特点: 两根线UCAxTXD、UCAxRXD;独立的收发移位寄存器和缓冲寄存器;波特率自动检测,可编程设置;状态寄存器提供错误监测和抑制、地址监测;独立收发中断 异步传输格式:(UCMODEx) UCIDLE:在IDLE-LINE模式下,表示该模式开启的标志位; UCDORM控制数据传输,置位时,所有非地址字节数据被装配但不送入缓存RXBUF中; UCRXIFG:溢出标志,缓存中有数据进入则置位; UCRXEIE:置位时所有可用的错误标志位可置位; UCTXADDR:地址数据进入TXBUF置位,字节完成后自动清位; UCBRK:检测到break则置位;UCTXBRK IrDA解码与编码: 对每个低位(0)数据调职为脉冲 UCIRTXPLx 规定脉冲调制时间为若干个半时钟周期;时钟由UCIRXCLK选择; UCIRTXCLK = 1 : UCIRTXPLx = 6 - 1 = 5. UCIRTXCLK = 0 : UCIRTXPLx = tPULSE ´ 2 ´ fBRCLK – 1 解码:滤波!UCIRRXEF滤波标志,长脉冲过、低脉冲丢弃 程序编制的滤波长度:UCIRRXFLx = (tPULSE – tWAKE) ´ 2 ´ fBRCLK – 4 自动错误监测:UCRXEIE 帧错误(UCFE)、校验错误(UCPE)、接受溢出错误(UCOE)、Break(UCBRK) 波特率产生: 低频模式(UCOS16 = 0),来自低频时钟源,最大波特率时源晶振BRCLK的1/3; N is the number of BRCLKs per BITCLK. 过采样模式:(UCOS16 = 1),支持在高电平时钟信号下采样位流;支持IrDA 最大波特率时源晶振BRCLK的1/16; 中断:中断适量寄存器UCAxIV 寄存器:(8位) UCAxCTL0:校验使能与选择、MSB、数据长度、停止位、工作模式、同步异步选择 UCAxCTL1:时钟信号、错误标志与Break使能、休眠(UCDORM)、复位时能、地址与数据选择 UCAxBR0,UCAxBR1:波波特率设置 UCAxMCTL:调整控制寄存器 UCBRFx UCBRSx UCOS16 模式选择 UCAxSTAT:状态寄存器、错误标志位、 UCAxRXBUF\UCAxTXBUF UCAxIRTCTL:红外发送脉冲长度、发送时钟、调制使能 UCAxIRRCTL:红外接收脉冲长度、发送时钟、调制使能 UCAxABCTL:自动波特率控制寄存器 UCAxIE: 中断使能 UCAxIFG:中断标志 UCAxIV:中断矢量
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 百科休闲 > 其他

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

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

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

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

gongan.png浙公网安备33021202000488号   

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

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

客服