KEIL MDK多字符串数组的使用

####定义
在使用时,与传统的单个数据不同,单个数据在使用时可以直接定义:

char arr[3][4];

而多字符串在定义时就必须利用指针定义即:

char *str[1]; 

在MCU系统中如果想使用ROM的话则可以使用codeconst 关键字。

####初始化
在51和STM32中,定义在ROM的方式时不同的,51时利用code关键字,而STM32则是利用const 关键字。
同时在初始化中:

//code 1
char *const str1[]={"str1","str2","str3"};

//code 2
const char* str2[]={"str1","str2","str3"};

这两种方式是不同的,前者可以在程序利用指针指向不同的字符串,后者则不可以,这点要特别注意。但是相同点则是这两种定义的字符串均不可以修改 。

Keil MDKKeil uVision集成开发环境)中处理串口输入字符串转化为整数并回显,通常涉及到以下几个步骤: 1. **初始化串口**: 使用Keil提供的库函数如`USART_Init` 初始化串口,设置波特率、数据位、停止位等。 ```c void USART_Init(void){ USART_InitTypeDef USART_InitStructure; // 初始化串口配置 USART_InitStructure.USART_BaudRate = baud_rate; // 设置波特率 USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_No; USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; HAL_UART_Init(&huart1, &USART_InitStructure); } ``` 2. **串口接收字符串**: 定义一个数组用于存储接收到的字符串,并在串口中断服务函数里接收数据,直到遇到换行符('\n')。 ```c char inputBuffer[20]; // 定义一个字符数组 void USART_RX_Callback(void){ if(HAL_UART_GetData(&huart1, &inputBuffer[currentIndex], 1) != HAL_OK) return; if(inputBuffer[currentIndex] == '\n'){ // 当接收到'\n',结束接收 inputBuffer[currentIndex] = '\0'; // 添加字符串终止符 processStringToInteger(inputBuffer); // 调用函数处理字符串转整数 // 输出结果到串口... } else { currentIndex++; } } void processStringToInteger(char *str){ int number = 0; for(int i=0; str[i]!='\0'; i++){ number = number * 10 + (str[i] - '0'); } // ...处理得到的整数,例如输出到串口 } ``` 3. **处理字符串转整数并输出**: 将接收到的字符串转换为整数,可以参考之前提到的ASCII转整数方法。然后,将整数通过串口发送出去。 4. **串口发送**: 使用`HAL_UART_Transmit` 函数发送整数值,比如用ASCII形式显示出来。 ```c void sendIntToUART(int num){ char output[10]; sprintf(output, "%d", num); // 格式化字符串 for(int i=0; output[i]!='\0'; i++){ HAL_UART_Transmit(&huart1, (uint8_t*)&output[i], 1, timeout); } } ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值