[mw_shl_code=c,true]int main(void)
{
u16 led0pwmval=1000;
u8 a;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//?è????????????????·?×é2
delay_init(168); //?????????±????
KEY_Init();
uart_init(115200);//???????®???¨??????115200
TIM5_PWM_Init(20000-1,84-1);//84M/84=1Mhz??????????,??×°????500???ù??PWM?????? 1M/500=2Khz. 50HZ
TIM_SetCompare1(TIM5,led0pwmval); //????±???????????????±?
while(1)
{
if(USART_RX_STA&0x8000)
{
a=USART_RX_BUF[0];
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);
printf("
");
USART_SendData(USART1, a);
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);
printf("
");
a=a*2; //为什么乘以2之后返回的是b呢
USART_SendData(USART1, a);
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);
TIM_SetCompare1(TIM5,led0pwmval);
printf("
");
USART_RX_STA=0;
}
}
}[/mw_shl_code]
用串口调试助手,发送数字1 ,在单片机里取出后,乘以2,返回串口助手的是字母b,,我查阅了ASCII 对应的值,发现1对应的是ASCII是49 ,乘以2是98 ,98正好对应字母b,,请问我如何才能使单片机通过串口接收到的1、2、3是真正的整形1、2、3,请指点迷津。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>