void pwm38k(void)
{
CLK->CKDIVR=0x00; //fCPU = fMASTER
TIM2->CR1=0x00; // 关闭定时器
TIM2->CCMR2=0x70; // 设置TIM2通道2为PMW2模式,计数器小于比较值为有效电平
TIM2->CCER1=0x32; // 高电平有效,捕获在上升沿
TIM2->PSCR=0x01; //计数器计数频率为16M/2^0=8Mhz,即每0.125us/2计数一次
TIM2->CNTRH=0x00; // 计数初值
TIM2->CNTRL=0xd1;
TIM2->ARRH=0x00; //
TIM2->ARRL=0xd1;
TIM2->CCR2H=0; //比较值,确定占空比
TIM2->CCR2L=21;
TIM2->IER=0x00; //关闭中断
TIM2->CR1=0x01; //开启定时器
}
void Uart_Init(void)
{
UART1_DeInit();
UART1_Init((u32)1200, UART1_WORDLENGTH_8D,UART1_STOPBITS_1,UART1_PARITY_EVEN,UART1_SYNCMODE_CLOCK_DISABLE,UART1_MODE_TXRX_ENABLE);
UART1_ITConfig(UART1_IT_RXNE, ENABLE);
UART1_Cmd(ENABLE);
}
int main( void )
{
/* Infinite loop */
/*设置内部时钟16M为主时钟*/
CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);
CLK_PeripheralClockConfig(CLK_PERIPHERAL_UART1, ENABLE);
CLK_HSICmd(ENABLE);
Uart_Init();
pwm38k();
unsigned char c=0x55;
while(1)
{
while(!(UART1->SR&0X80));
UART1_SendData8(c);
// c++;
while(!(UART1->SR&0X40));
} |