初级会员

- 积分
- 93
- 金钱
- 93
- 注册时间
- 2011-4-29
- 在线时间
- 18 小时
|
5金钱
本帖最后由 jing794926058 于 2018-7-24 16:44 编辑
请教各位大哥:
我新手 ,正在学串口接收,串口接收字符串A4561# ,我想把其中的4,5,6 三个字符转换并组合成10进制的456(4百5拾6),请问如何做啊
下面是我写的程序:
if((USART_RX_BUF[4]=='1')&&(USART_RX_BUF[5]=='#'))
{
num1=(USART_RX_BUF[1]-'0')*100+(USART_RX_BUF[2]-'0')*10+(USART_RX_BUF[3]-'0');
TIM_SetCompare1(TIM5,num1);
}
请问这样写有问题吗,有问题如何改啊?
我把程序上传了附件,请比较熟悉的朋友看看 ,指点一下,谢谢啦
程序功能:串口1接收字符串:A5551# , PWM5_CH1(PA0)输出55.5%占空比,发送A5552# PWM5_CH2(PA0)输出55.5%占空比,555代表占空比值 1代表TIM5的CH1通道 ,以此类推
问题已经解决,附件程序功能是正常的,欢迎各位高手指点指点。
|
最佳答案
查看完整内容[请看2#楼]
问题终于解决了,查了半天,发现是变量值范围定义的小了,范围是0-999的值,定义变量时用了 u8 ,改成u16就正常了, 现附上正确的程序(1楼附件),交流交流, 谢谢上面的回复.
|