1. 程式人生 > >摩托羅拉can協議組幀(處理器為大端模式,協議為小端模式)

摩托羅拉can協議組幀(處理器為大端模式,協議為小端模式)

/*
 * mss_CanYanyin.c
 *
 *  Created on: 2018年1月2日
 *    
 */

/*
 * Can_Trans.c
 *
 *  Created on: 2017年6月28日
 *    
 */

/**************************************************************************
 *************************** Include Files ********************************
 **************************************************************************/
/* Standard Include Files. */
#include <stdint.h>
#include <stdlib.h>
#include <stddef.h>
#include <string.h>
#include <stdio.h>
#include <math.h>

/* BIOS/XDC Include Files. */
#include <xdc/std.h>
#include <xdc/cfg/global.h>
#include <xdc/runtime/IHeap.h>
#include <xdc/runtime/System.h>
#include <xdc/runtime/Error.h>
#include <xdc/runtime/Memory.h>
#include <ti/sysbios/BIOS.h>
#include <ti/sysbios/knl/Task.h>
#include <ti/sysbios/knl/Event.h>
#include <ti/sysbios/knl/Semaphore.h>
#include <ti/sysbios/knl/Clock.h>
#include <ti/sysbios/heaps/HeapBuf.h>
#include <ti/sysbios/heaps/HeapMem.h>
#include <ti/sysbios/knl/Event.h>
#include <ti/sysbios/family/arm/v7a/Pmu.h>


/* Can Drivers Files: */
#include <ti/common/sys_common.h>
#include <ti/drivers/soc/soc.h>
#include <ti/drivers/canfd/canfd.h>
#include <ti/drivers/pinmux/pinmux.h>
#include <ti/drivers/esm/esm.h>
#include <ti/utils/testlogger/logger.h>
#include <ti/drivers/osal/HwiP.h>
#include "mss_Candriver.h"
#include "mss_qspiflash.h"
//#include "mss_alarm.h"

//**************************************************************************
// CAN 目標輸出
//**************************************************************************
void CANTargetOutput(TargetInfo* TargetImfomation,uint16_t DSPdoutlen)
{
    uint16_t i , j;
    uint32_t CAN_id1;
    CAN_id1 = TARGETOUTTXID1;                //500
    uint16_t indextempidinfo[32];
    uint16_t targetnumber = 0;

    memset(&indextempidinfo[0] , 0 , sizeof(uint16_t)*32);

    targetnumber = DSPdoutlen;
    for(i = 0 ; i < targetnumber ; i++) indextempidinfo[i] = TargetImfomation[i].Id;

    for(i = 0 ; i < 32 ; i++){

        if(TargetTrackingMcb[i].FullEnptyFlag != 0){

            TargetTrackingMcb[i].FullEnptyFlag = 0;

            for(j = 0 ; j < targetnumber; j++){

                if(TargetTrackingMcb[i].TargetId == TargetImfomation[j].Id){

                    TargetTrackingMcb[i].FullEnptyFlag = 1;
                    TargetTrackingMcb[i].TargetPtr = &TargetImfomation[j];
                    indextempidinfo[j] = 0;
                }
            }

            if(TargetTrackingMcb[i].FullEnptyFlag == 0) memset(&TargetTrackingMcb[i] , 0 , sizeof(TargetTrackingMcb_t));
        }
        else{

            TargetTrackingMcb[i].TargetPtr = (TargetInfo*)&enptytargetinfo[0];
        }
    }

    i = 0 ; j = 0;

    for(i = 0 ; i < targetnumber ; i++){

        if(indextempidinfo[i] != 0){

            j = 0;
            while(TargetTrackingMcb[j].FullEnptyFlag == 1){ j++;}

            TargetTrackingMcb[j].FullEnptyFlag = 1;
            TargetTrackingMcb[j].TargetId = TargetImfomation[i].Id;
            TargetTrackingMcb[j].TargetPtr = &TargetImfomation[i];
        }
    }

    for(i = 0; i < 32; i++)
    {
        memset(&ucTXMsgData[0] , 0 , sizeof(unsigned char)*8);

        //------------------------------------------------------------------------------------------------------------------------//ID1
        //SG_ MMR_TARGET_RANGE_RATE : 53|
[email protected]
+ (0.02,-163.84) [-163.84|163.82] "m/s" Vector__XXX tempdata = TargetTrackingMcb[i].TargetPtr->Velocity*5; Htempdata = (tempdata >> 8); Ltempdata = tempdata; ucTXMsgData[6] = (Htempdata & 0x3F); ucTXMsgData[7] = Ltempdata; //bit 54 for reserve //SG_ MMR_TARGET_PITCH_ANGLE : 47|
[email protected]
+ (0.1,-25.6) [-25.6|25.5] "deg" Vector__XXX tempdata = 0; Htempdata = (tempdata >> 8); Ltempdata = tempdata; ucTXMsgData[5] = (Htempdata & 0x01); ucTXMsgData[5] = ucTXMsgData[5] << 7; ucTXMsgData[5] = ucTXMsgData[5] | (Ltempdata >> 1); ucTXMsgData[6] = ucTXMsgData[6] | ((Ltempdata&0x01)<<7); //SG_ MMR_TARGET_RANGE : 28|
[email protected]
+ (0.05,0) [0|300] "m" Vector__XXX tempdata = TargetTrackingMcb[i].TargetPtr->Distance*2; Htempdata = (tempdata >> 8); Ltempdata = tempdata; ucTXMsgData[3] = (Htempdata & 0x1F); ucTXMsgData[4] = Ltempdata; //SG_ MMR_TARGET_ANGLE : 23|[email protected]+ (0.1,-102.4) [-102.4|102.3] "deg" Vector__XXX tempdata = TargetTrackingMcb[i].TargetPtr->Angle; Htempdata = (tempdata >> 8); Ltempdata = tempdata; ucTXMsgData[2] = Htempdata & (0X07); ucTXMsgData[2] = ucTXMsgData[2] << 5; ucTXMsgData[2] = ucTXMsgData[2] | (Ltempdata >> 3); ucTXMsgData[3] = ucTXMsgData[3] | ((Ltempdata & (0X07)) << 5); //SG_ MMR_TARGET_RADARMODE : 15|[email protected]+ (1,0) [0|1] "" Vector__XXX ucTXMsgData[1] = ucTXMsgData[1] | SLMODEFLAG; //SG_ MMR_TARGET_CONFIDENCE : 14|[email protected]+ (1,0) [0|100] "%" Vector__XXX tempdata = 0; Htempdata = (tempdata >> 8); Ltempdata = tempdata; ucTXMsgData[1] = ucTXMsgData[1] | (Ltempdata >> 1); //SG_ MMR_TARGET_FRAME_INDEX : 7|[email protected]+ (1,0) [0|0] "count" Vector__XXX tempdata = framecnt & 0x0F; Htempdata = (tempdata >> 8); Ltempdata = tempdata; ucTXMsgData[0] = Ltempdata; ucTXMsgData[0] = ucTXMsgData[0] << 4; //SG_ MMR_TARGET_STATUS : 3|[email protected]+ (1,0) [0|15] "count" Vector__XXX tempdata = 0; Htempdata = (tempdata >> 8); Ltempdata = tempdata; ucTXMsgData[0] = ucTXMsgData[0] | (Ltempdata & 0x0F); retVal = CANFD_transmitData (txMsgObjHandle[i], CAN_id1+i , CANFD_MCANFrameType_CLASSIC, 8U, &ucTXMsgData[0], &errCode); } framecnt++; }

相關推薦

摩托can協議處理器大端模式協議模式

/* * mss_CanYanyin.c * * Created on: 2018年1月2日 * */ /* * Can_Trans.c * * Created on: 2017年6月28日 * */ /*************

摩托MT788刷機

摩托羅拉 刷機 好久不用的MT788今天拿出來一看,竟然忘記手勢密碼,oh my god然後嘗試進入recovery 模式刷機分享一下方法:1、將手機處於關機狀態下。2、按住音量下鍵和音量上鍵不松,再同時按電源鍵開機等待幾秒鐘後屏幕黑了就松開所有的按鍵後會自動進入DROIDBOOT界面(音量上加電源鍵

關於摩托和諾基亞的建築佈局

房屋處於四周草坪和綠樹當中, 食堂後門有專門的停車場,上貨下貨的1米左右平臺, 食堂24小時開門,有沙發, 大樓呈栯圓形,綠樹中有一條環形的走道, 食堂前面有梧桐樹,梧桐樹下有鐵條焊接的桌子和帶橡膠墊的鐵椅子, 熱天可以 做在外面吃東西和乘涼,另處還有一個藍球場,沙

摩托MC3200(MC32N0) 安卓開發錯誤收集

摩托羅拉MC3200 安卓開發時, 報錯1::呼叫SDK即崩潰: 解決: AndroidManifest.xml 裡面 <application> 節點內新增 <uses-library android:name="com.symbol.emdk"/>

摩托艱難歸來:如何成為蘋果世界的顛覆者?

2011年2月7日摩托羅拉移動技術公司推出了一則“Breaker”故事的全新廣告。摩托羅拉希望成為蘋果白色世界的一個顛覆者,不過,它必須首先克服作為老牌廠商在價格、機型、開發者、使用者心理等方面的重重束縛。 在今年2月7日第45屆美式橄欖球超級碗直播中,摩托羅拉移動技術公司

wince開發_摩托MC3100_開啟條碼設定

呵呵不多說,直接上圖 1.開啟控制面板 2.點選“DataWedge”圖示 3.點選“Status:”,條碼掃描開啟 4.點“Basic format...“ 5.點”Send data Enabled“ 6.點”7. Send ENTER key“,條碼掃描後

模擬select下框之多選數據源采用模擬Ajax數據--原創

bbb n) nowrap pac inner sel cte spl innerhtml 最近需要一個下拉多選,本來想偷懶的,所以在網上百度了一番,最終還是發現沒有一個符合自己要求的,所以我自己寫了一個插件。下面是GIF動態效果圖展示 相信大家已經看到效果了,接下來

python元 列表 取值、替換、插入、新增、刪除

1、元組 列表 字典 元組( 元組是不可變的) hello = (1,2,3,4,5) type(hello)   2、陣列(可變) myinfo = ['simida', 20, 'dalao', ['史蒂夫', 2000]]

幾種開源SIP協議棧對比文章很早了僅供參考

幾種開源SIP協議棧對比 2006-12-05 15:49   基於SIP的開發的話,基本還是使用開源的協議棧的,當然也有牛的公司和單位是自己開發協議棧的,不過並不一定比開源的好用,不過可能使用在特定場合時,會有一定優勢吧。   在以前開發UA時,我用的

lombok使用給自己看的不要忘記自己用過的技術

ref targe 添加 res tostring 當我 fin alsa nal 如何使用? 一、1)eclipse使用方法 1. 從項目首頁下載lombok.jar 2. 雙擊lombok.jar, 將其安裝到eclipse中(該項目需要jdk1.6+的環境)

Java踩坑筆記:ObjectIOStream與IOStream的各種裝飾器先挖個坑以後再來詳細填

ted objects lose val read thread 環境 valid 序列化對象 Java的序列化和ObjectStream真是一個大坑。。 先不說多線程環境下的問題,在單線程裏,一個Socket只能保持一個ObjectOutputStream,原因好像是

投資人的能量往往大多遠遠不僅於此他能站在不同的角度和高度看問題要早點拿投資要舍得讓出股份——最好不要讓 Leader 一邊做技術、一邊做管理人的能力是有限的精力也是有限的

探索 行業 編程 資金 背景 八仙過海 源代碼 運營 拒絕    摘要:在創業三年時間裏作為聯合創始人,雖然拿著大家均等的股份,我始終是沒有什麽話語權的,但是,這也給了我從旁觀者的角度看清整個局面的機會。創業公司的成敗絕大程度取決於技術大牛和公司 Leader,這兩個人最

LAMP架構apache與php結合apache默認虛擬主機

apache與php的結合 apache默認虛擬主機 一、apache與php結合主配置文件/usr/local/apache2.4/conf/httpd.conf[root@localhost ~]# /usr/local/apache2.4/bin/apachectl graceful (重新加

軟路由OpenWrt教程收集插件開發教程opkg安裝軟件教程

log 都是 路由器 級別 開發教程 div lan 安裝 軟件教程 說明:現在幾乎所有家庭級別的路由器都是基於OpenWrt進行衍生搭建的。 https://openwrt.io/(極路由HiWifi創建的開源站點,極路由系統有這個衍生而來) http://www.o

Java學習筆記—多線程並發工具類java.util.concurrent.atomic包

配對 初始 訪問 接收 iter nco .get 執行 string 在JDK的並發包裏提供了幾個非常有用的並發工具類。CountDownLatch、CyclicBarrier和Semaphore工具類提供了一種並發流程控制的手段,Exchanger工具類則提供了在線程間

npm install 報錯npm ERR! errno -4048Error: EPERM: operation not permitted,解決方法

win npm support comm project 需要 event sin 命令 npm ERR! path E:\SouthernPowerGridProject\web_project\AutoOPS\autoops\node_modules\fsevents\

GPIO輸入輸出各種模式推挽、開漏、準雙向詳解

結構 inf 根據 action 存在 -i container 大致 信號線 GPIO輸入輸出各種模式(推挽、開漏、準雙向端口 概述 能將處理器的GPIO(General Purpose Input and Output)內部結構和各種模式徹底弄清

BZOJ2653 middle 只是存個板子什麽都沒寫

get g++ ret put max roo tor getchar() ace 比較皮的一點是,本題我們先按權值排序,建主席樹,然後每個線段樹是按下標建的,/ #include<bits/stdc++.h> #include<cstdio&g

Windows虛擬地址轉物理地址原理+源碼實現附簡單工具

size_t \n 動手 機器碼 status 情況 direct nload amp      

spark 中如何查看單個RDD分區的內容創建分區查看分區數

ons red code put NPU 如何 art scores 內容 spark 創建分區 val scores = Array(("Fred", 88), ("Fred", 95), ("Fred", 91), ("Wilma", 93), ("Wilma", 95