|
我的源程序是:
#include "2410addr.h"
void PWM_Init(unsigned int cycle,unsigned int duty){
if (duty > cycle) duty = cycle; // 参数过滤
rTCFG0=rTCFG0 & ~(0xff << 8)|(99 << 8);//rTCFG0[15:8]=99,预分频器0设置为100,取得507000Hz
rTCFG1=rTCFG1 & ~(0xf << 8); //rTCFG1[11:8]=0,timer2再取1/2分频,取得253500Hz
rTCMPB2=duty; // 设置PWM占空比,定时器T2的比较缓冲值
rTCNTB2=cycle; // 定时值(PWM周期),计数缓冲 减法计数
rTCON=(rTCON & ~(0xf << 12)) | (0x0d<<12); // T2自动重装,输出反向,手动更新无操作,启动T2
}
void Main(void){
int nLED=0;
rGPGCON &= ~(3 << 6); //rGPGCON[7:6]=0,KEY1控制口设置
rGPBCON = (rGPBCON & (~(3<<4))) | (2<<4); //rGPBCON[5:4] = 10b,设置TOUT2功能
rGPBUP |= (1<<2); //禁止TOUT0口的上拉电阻
PWM_Init(255, 100);
while(1)
if((rGPBDAT&0x04)==1) //TOUT2 输出反向 观测点
while(1) ;
}
在AXD中仿真时,发现rTCON等寄存器都正确加载,但是TOUT2始终无输出,我查了一下资料Tout2应该是GPB2。请问各位大侠这是怎么回事?
补充一句:小弟是刚刚学习ARM9的。 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。
|