int main(void)
{
u16 len;
u16 t;
u16 value;
u16 pwm;
u16 i;
delay_init(); //延时函数初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
uart_init(115200); //串口初始化为115200
LED_Init(); //LED端口初始化
TIM3_PWM_Init(899,0); //不分频。PWM频率=72000000/900=80Khz
while(1)
{
delay_ms(10);
if(USART_RX_STA&0x8000)
{
len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度
// printf("\r\n您发送的消息为:\r\n\r\n");
for(t=0;t<len;t++)
{
USART_SendData(USART1, USART_RX_BUF[t]);//向串口1发送数据
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送结束
}
value=((USART_RX_BUF[0]-'0')*100+(USART_RX_BUF[1]-'0')*10+(USART_RX_BUF[2]-'0'));//
// value=(USART_RX_BUF[0]);
pwm=value;
TIM_SetCompare2(TIM3,pwm);//pwm函数给定时器
}
}
}
value=(USART_RX_BUF[0]);用串口输入0至8时(十进制),单片机led灯可以由暗至亮
value=((USART_RX_BUF[0]-'0')*100+(USART_RX_BUF[1]-'0')*10+(USART_RX_BUF[2]-'0'));//这种方法是可以接收长数,但是存在问题:用串口助手输入0至100时(十进制),单片机led灯可以由暗至亮(但是8比18、28、38、48、58、68、78都亮)
求教,如何写才能实现串口助手值输入0值100时(十进制数),led灯由暗至亮一点点变化
|