找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3816|回复: 1
收起左侧

关于STM32接受数据进入数组之后的使用问题

[复制链接]
ID:475866 发表于 2019-3-23 16:46 | 显示全部楼层 |阅读模式
各位经验丰富的大佬们你们好
现在我有一个问题,就是我写STM32中,把收到的字符串塞进了数组里,然后我要使用这个数组中的其中一位。
我在中断函数中写的数据塞入数组。
void USART1_IRQHandler(void){
        u8 USART_Rx=0;
        u8 USART_BUF[6];//就是这个数组,在这儿定义过了,要求我在主函数再定义一次
        u8 Res;
        u8 DATA_SOUCE;
#if SYSTEM_SUPPORT_OS                 //èç1ûSYSTEM_SUPPORT_OSÎaÕ棬ÔòDèòaÖ§3ÖOS.
        OSIntEnter();   
#endif
        if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET){       
        USART_ClearITPendingBit(USART1,USART_IT_RXNE)
                Res =USART_ReceiveData(USART1);
                USART_SendData(USART1, Res);               
    USART_BUF[USART_Rx]=USART_ReceiveData(USART1);
                USART_Rx++;
                USART_Rx&=0xFF;

在主函数中写数组的第几位。
int main(void){
        u16 t;  
//        u16 ch;       
        double ch;
        double aimtemp;
        u8 DATA_SOUCE;
        u8 USART_BUF[6];       
        u16 times=0;
       
        delay_init();
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2)
        uart_init(9600);
        LED_Init();
               
  while (1)
  {
                ch=(USART_BUF[2]-'0')*10+(USART_BUF[3]-'0')*1+(USART_BUF[5]-'0')*0.1;
       


都是失败的。
疑问,第一是不是我没有塞进数组?
第二,是不是这个数组在两个函数里写,即使名字一样,也不是同一个数组。如果真的不是同一个数组,我该怎么建立联系呢?
回复

使用道具 举报

ID:404160 发表于 2019-3-25 19:25 | 显示全部楼层
这个数组都是局部变量(  u8 USART_BUF[6];//就是这个数组,在这儿定义过了,要求我在主函数再定义一次)。把它放在程序开始的地方说明,即可在所有函数中使用。局部变量只能在当前函数内有效。退出当前函数,其变量即释放。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表