![]() |
|
||||||||||||||
| . 网站首页 . 新闻 . 新品 . 方案 . 专访 . 活动 . DSP . EDA . 评测室 . 技术文库 . 会员区 . 商城 . 服务导航 . 邮购 . 资源 . | ||
|
||
|
|||||
| 基于DSP240x PWM波形产生举例 | |||||
作者:61IC 文章来源:本站原创 点击数: 更新时间:2007-1-16 ![]() |
|||||
|
PWM波形产生举例 程序如下: (1) 所需的复位和中断向量定义文件“vectors.asm” // 该文件利用汇编语言代码定义了复位和中断向量 .ref _nothing;直接返回的中断服务程序符号 .ref _c_int0 ;复位向量符号 .sect ".vectors" RSVECT B _c_int0 // PM 0 复位向量 1 INT1 B _nothing // PM 2 中断优先级1 4 INT2 B _nothing // PM 4 中断优先级2 5 INT3 B _nothing // PM 6 中断优先级3 6 INT4 B _nothing // PM 8 中断优先级4 7 INT5 B _nothing // PM A 中断优先级5 8 INT6 B _nothing // PM C 中断优先级6 9 (2) 主程序 // 该程序利用EVB模块的PWM7——PWM12引脚产生不同占空比的方波 #include "register.h" // 屏蔽中断程序 void inline disable() { asm(" setc INTM"); } // 系统初始化子程序 int initial() { asm(" setc SXM"); // 符号位扩展有效 asm(" clrc OVM"); // 累加器中结果正常溢出 asm(" clrc CNF"); // B0被配置为数据存储空间 *SCSR1=0x81FE; // CLKIN= *WDCR=0x0E8; // 不使能看门狗,因为SCSR2中的WDOVERRIDE // 即WD保护位复位后的缺省值为1,故可以用 // 软件禁止看门狗 *IMR=0x0000; // 禁止所有中断 *IFR=0x0FFFF; // 清除全部中断标志,"写1清0" WSGR=0X00; // 禁止所有的等待状态 } // EVB模块的PWM初始化程序 int pwminitial() { *MCRC=*MCRC|0X007E; // IOPE1-6被配置为基本功能方式,PWM7-12 *ACTRB=0X0666; // PWM12,10,8 低有效,PWM11,9,7 高有效 *DBTCONB=0X00; // 不使能死区控制 *CMPR4=0X1000; *CMPR5=0X3000; *CMPR6=0X5000; *T3PER=0X6000; // 设置定时器3的周期寄存器,并设置CMPR4-6,以确定不 // 同的输出占空比 *COMCONB=0X8200; // 使能比较操作 *T3CON=0X1000; // 定时器3为连续增计数模式 } // 该中断服务程序主要是为了防止干扰,不做任何其它操作 void interrupt nothing() { return; // 中断直接返回 } // 主程序 main( ) { disable(); // 总中断禁止 initial(); // 系统初始化 pwminitial(); // PWM输出初始化 *T3CON=*T3CON|0x0040; // 启动定时器3 while(1) { ; } } |
|||||
| 欢迎点击进入:TI德州中文网 (国内唯一针对TI应用的中文技术网站) 文章录入:admin 责任编辑:admin | |||||
| 【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 | |||||
| 网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!) |
| | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告 | 管理登录 | | |||
|
|