打印
[STM32F1]

stm32常见字符串怎么解析?

[复制链接]
5694|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
如何解析从串口接收到的字符串中提取命令和数字参数?
来自 2楼
一路向北lm|  楼主 | 2017-9-11 16:03 | 只看该作者
串口发送字符串数据函数可以这样来写:
把字符串分成字节循环发送
void UART_PutChar(USART_TypeDef* USARTx, uint8_t Data)
{  
USART_SendData(USARTx, Data);
while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
}
void UART_PutStr (USART_TypeDef* USARTx, uint8_t *str)   
{
   while (0 != *str)
   {
    UART_PutChar(USARTx, *str);  
    str++;  
   }   
}


使用特权

评论回复
来自 3楼
一路向北lm|  楼主 | 2017-9-11 16:58 | 只看该作者
VA_LIST 是在C语言中解决变参问题的一组宏,变参问题是指参数的个数不定,可以是传入一个参数也可以是多个;可变参数中的每个参数的类型可以不同,也可以相同;可变参数的每个参数并没有实际的名称与之相对应,用起来是很灵活。
VA_LIST的用法:      
       (1)首先在函数里定义一具VA_LIST型的变量,这个变量是指向参数的指针;
       (2)然后用VA_START宏初始化变量刚定义的VA_LIST变量;
       (3)然后用VA_ARG返回可变的参数,VA_ARG的第二个参数是你要返回的参数的类型(如果函数有多个可变参数的,依次调用VA_ARG获取各个参数);
       (4)最后用VA_END宏结束可变参数的获取。
STM32串口发送字符串代码里用到了这个,有点看不懂。


3.JPG (170.58 KB )

3.JPG

使用特权

评论回复
来自 4楼
一路向北lm|  楼主 | 2017-9-11 17:33 | 只看该作者
volatile关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改。
用volatile关键字声明的变量i每一次被访问时,执行部件都会从i相应的内存单元中取出i的值。
没有用volatile关键字声明的变量i在被访问的时候可能直接从cpu的寄存器中取值(因为之前i被访问过,也就是说之前就从内存中取出i的值保存到某个寄存器中),之所以直接从寄存器中取值,而不去内存中取值,是因为编译器优化代码的结果(访问cpu寄存器比访问ram快的多)。

以上两种情况的区别在于被编译成汇编代码之后,两者是不一样的。之所以这样做是因为变量i可能会经常变化,保证对特殊地址的稳定访问。
stm32代码里有对变量这样的操作。


5.JPG (28.72 KB )

5.JPG

使用特权

评论回复
5
玄德| | 2017-9-11 16:33 | 只看该作者

简单说:根据协议解析。


使用特权

评论回复
6
一路向北lm|  楼主 | 2017-9-11 16:55 | 只看该作者
玄德 发表于 2017-9-11 16:33
简单说:根据协议解析。

就是字符串处理有难,我写不好,怎么处理字符串。

使用特权

评论回复
7
lihuami| | 2017-9-11 17:16 | 只看该作者
使用字符串的话,可以使用*或者;作为分解

使用特权

评论回复
8
lihuami| | 2017-9-11 17:17 | 只看该作者
在上位机可以很简单的处理所有的数据的。

使用特权

评论回复
9
一路向北lm|  楼主 | 2017-9-11 17:30 | 只看该作者
lihuami 发表于 2017-9-11 17:17
在上位机可以很简单的处理所有的数据的。

在32里面就不可以用上位机了,还是想研究下字符串的解析,提高下C的功底。

使用特权

评论回复
10
mmuuss586| | 2017-9-11 18:22 | 只看该作者
谢谢分享

使用特权

评论回复
11
玄德| | 2017-9-11 20:45 | 只看该作者
一路向北lm 发表于 2017-9-11 16:55
就是字符串处理有难,我写不好,怎么处理字符串。


"abcd"=0x41424344


使用特权

评论回复
12
一路向北lm|  楼主 | 2017-9-12 15:42 | 只看该作者

这个能干嘛?有什么用?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

257

主题

3643

帖子

73

粉丝