ZigBee-CC2530單片機 - 1路硬體PWM控制舵機角度(精度為1us)
程式原始碼
#include <ioCC2530.h>
typedef unsigned char uchar;
typedef unsigned int uint;
//系統時鐘初始化
void SystemClockInit()
{
CLKCONCMD &= ~0x40; //設定系統時鐘源為32MHZ晶振
while(CLKCONSTA & 0x40); //等待晶振穩定為32M
CLKCONCMD &= ~0x07; //設定系統主時鐘頻率為32MHZ
}
//定時器1輸出PWM
void Timer1PwmInit()
{
uint value;
CLKCONCMD |= 0x28; //時鐘速度32 MHz 定時器標記輸出設定[5:3]1MHz
PERCFG |= 0x40; //定時器1 的IO位置 1:備用位置2
P2SEL &= ~0x10; //定時器1優先
P2DIR |= 0xC0; //第1優先級:定時器1通道2-3
//timer1 通道2映射口P1_0
P1DIR |= 0x01;
P1SEL |= 0x01;
//設定周期
value=19999;
T1CC0H = value>>8;
T1CC0L = value;
// 模式選擇 通道2比較模式
T1CCTL2 = 0x1c;
//不分頻,模計數
T1CTL = 0x02;
}
//定時器通道2PWM輸出
void Timer1ch2PwmOut(uint value)
{
value= 19999 - value;
T1CC2H = value>>8;
T1CC2L = value;
}
void main(void)
{
SystemClockInit();
Timer1PwmInit();
Timer1ch2PwmOut(2500-1);// P1_0 輸出2.5ms的占空比
while(1)
{
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/259806.html
標籤:其他
