| | |
| | | } |
| | | return i; |
| | | } |
| | | /** |
| | | * 冒泡排序数组 |
| | | * @param int a[] 要排序的数组 |
| | | * @param int n 数组元素的个数 |
| | | **/ |
| | | void bubble_sort(int32_t a[],uint16_t n) |
| | | { |
| | | for(int i=0; i<n-1; i++) |
| | | { |
| | | int isSorted = 1; |
| | | for(int j=0; j<n-1-i; j++) |
| | | { |
| | | if(a[j] > a[j+1]) |
| | | { |
| | | isSorted = 0; |
| | | int32_t temp = a[j];//时间 |
| | | uint16_t temp1 = tagid_list[j];//id |
| | | // uint16_t temp2 = uwbqueue.fail_num[j];//uwb接受失败的次数 |
| | | // uint8_t temp3 = uwbqueue.flag_newanchor[j];//新老基站 |
| | | |
| | | a[j] = a[j+1]; |
| | | tagid_list[j]= tagid_list[j+1]; |
| | | // uwbqueue.fail_num[j]= uwbqueue.fail_num[j+1]; |
| | | // uwbqueue.flag_newanchor[j]= uwbqueue.flag_newanchor[j+1]; |
| | | |
| | | a[j+1]=temp; |
| | | tagid_list[j+1]=temp1; |
| | | // uwbqueue.fail_num[j+1]=temp2; |
| | | // uwbqueue.flag_newanchor[j+1]=temp3; |
| | | } |
| | | } |
| | | if(isSorted) break; |
| | | } |
| | | } |
| | | uint8_t Anchor_RecNearPoll(uint8_t ancrec_nearbasepos) //0 mainbase 1 first near_base |
| | | { |
| | | uint8_t motorstate; |
| | |
| | | memcpy(&usart_send[10+4*rec_nearbase_num],&checksum,2); |
| | | UART_PushFrame(usart_send,12+rec_nearbase_num*4); |
| | | #endif |
| | | // taglist_num = 30; |
| | | // tagid_list[29] = 0x5288; |
| | | taglist_pos=CmpTagInList(tag_id_recv); |
| | | if(taglist_pos==taglist_num) |
| | | { |
| | |
| | | dwt_setinterrupt( DWT_INT_RFCG | (DWT_INT_ARFE | DWT_INT_RFSL | DWT_INT_SFDT | DWT_INT_RPHE | DWT_INT_RFCE | DWT_INT_RFTO | DWT_INT_RXPTO), 1); |
| | | dwt_setrxtimeout(0);//设定接收超时时间,0位没有超时时间 |
| | | dwt_rxenable(0); |
| | | bubble_sort(tagdist_list,taglist_num); |
| | | } |