CUBEMX点亮F407 LCD,NT35510驱动

wansaiyon 发表了文章 • 2 个评论 • 1362 次浏览 • 2017-08-21 00:31 • 来自相关话题

微信图片_20170821002844.jpg

畸形SPI数据位用hal库怎么接收和发送?

浮生一城 回复了问题 • 3 人关注 • 2 个回复 • 1147 次浏览 • 2017-08-18 16:36 • 来自相关话题

我用STM32做了个USB 4串口的程序,在WINDOS XP下可以正常使用,而WIN7蓝屏!

回复

FSL 发起了问题 • 1 人关注 • 0 个回复 • 861 次浏览 • 2017-07-27 19:09 • 来自相关话题

小白问题:用stm32cubemx生成代码后,需要自己写或者移植一个自己的库吗

admin 回复了问题 • 2 人关注 • 2 个回复 • 1526 次浏览 • 2017-07-22 10:48 • 来自相关话题

在贴内的代码中,注释常常为乱码,请教下这个要怎么解决?

维泽凌峰 回复了问题 • 4 人关注 • 3 个回复 • 999 次浏览 • 2017-07-15 20:42 • 来自相关话题

can中断接收,同时定时器中断发送问题求教

Krishna 回复了问题 • 6 人关注 • 4 个回复 • 3070 次浏览 • 2017-07-12 15:51 • 来自相关话题

小白问题 stm32cube生成工错误

起点VS 回复了问题 • 2 人关注 • 2 个回复 • 662 次浏览 • 2017-06-18 22:45 • 来自相关话题

滤波算法学习与讨论

admin 发表了文章 • 4 个评论 • 2850 次浏览 • 2017-06-16 11:52 • 来自相关话题

最近要用到滤波算法,先前转载了个卡尔曼的c,但是不知道效果和怎么使用,听说研究算法都要用到matlab,可惜不会...就用aar+echarts来表示下波形好了.上图是我在aar里直接调用C语言的那个卡尔曼产生的波形.感觉不忍直视,算法肯定调用有错误,这个aar调用c函数看来应该不像想象中那样用....var data1string ,data2string,data3string = "{data:[","{data:[","{data:[";

//aardio调用C语言函数
var code = /****
#include <stdio.h>
#include <stdlib.h> 

long KalmanFilter(long ResrcData)
{
     /*-------------------------------------------------------------------------------------------------------------*/
     /*
             Q:过程噪声,Q增大,动态响应变快,收敛稳定性变坏
             R:测量噪声,R增大,动态响应变慢,收敛稳定性变好
     */
     /*-------------------------------------------------------------------------------------------------------------*/
     static long R = (int32_t)(128*1024);
     static long Q = (int32_t)4;
     static long Counter1 ;
     static long Counter2;
     static long x_last;
        static long p_last;   // 应赋初始估计值
     long x_mid;
     long x_now;
     long p_mid ;
     long p_now;
 
     ResrcData *= 1024;
     x_now = ResrcData - x_last;
     if(x_now < 0)
     {
         x_now *= -1; // 取绝对值
     }
     if(x_now >= 32*1024)   // 如果测量值连续比估计值大或小 相信测量值,加速迭代
     {
         Counter1++;
         Counter2 = 0;
         if(Counter1 > 10)
         {
             R = 512;;
             Q = 128;
         }
     }
     else                 // 数据比较稳定,加强滤波 
     {
         Counter1 = 0;
         Counter2++;
         if(Counter2 > 10)  
         {
             R = (int)(128*1024);
             Q = (int)4;
         }
     }
     x_mid = x_last;   // x_last=x(k-1|k-1),x_mid=x(k|k-1)
     p_mid = p_last + Q; // p_mid=p(k|k-1),p_last=p(k-1|k-1),Q=噪声
//    kg = p_mid/(p_mid + R); //kg为kalman filter,R为噪声
//    x_now = x_mid+kg*(ResrcData - x_mid);// 估计出的最优值
     x_now = x_mid + (p_mid*(ResrcData - x_mid))/(p_mid + R);
//    p_now = (1 - kg)*p_mid; // 最优值对应的covariance
     p_now = p_mid - p_mid*p_mid/(p_mid + R); // 最优值对应的covariance
     p_last = p_now;  // 更新covariance值
     x_last = x_now;  // 更新系统状态值
     x_now /= 1024;
     if((x_now > 4096)||( x_now < 0))
     {
         x_last = ResrcData;
         p_now = ResrcData;
         x_now = ResrcData/1024;
     }
     return (int)x_now;
}

****/
mainForm.button2.oncommand = function(id,event){
//mainForm.msgbox( mainForm.button2.text );

import console;
import tcc;  
console.open()

var vm = tcc( ); //创建TCC编译器 
vm.compile(code); //编译C源码

//调用C函数
var data1,data2 = 0,0;
for(i=1;179;1){
data1 = math.round(math.sin(math.rad(i))*500);
data2 = math.round(math.sin(math.rad(i))*500) + math.random(-5, 5);
var ret = vm.KalmanFilter(data2);
console.log( "C函数返回值2",data1,data2, ret )

data1string = data1string ++ data1 ++ ",";
data2string = data2string ++ data2 ++ ",";
data3string = data3string ++ ret ++ ",";
//console.more(50)
}




}

mainForm.button3.oncommand = function(id,event){
//mainForm.msgbox( mainForm.button3.text );


var datastr;
var datalist_start = "var option = { series:["
var datalist_end = "] }; myChart.setOption(option);";

datastr = datalist_start ++ data1string ++ "]},"++ data2string ++ "]},"++ data3string ++ "]}," ++ datalist_end;
wbKitView.doScript(datastr);
}下面还是老老实实把C转换成aar语句去.. 查看全部

最近要用到滤波算法,先前转载了个卡尔曼的c,但是不知道效果和怎么使用,

听说研究算法都要用到matlab,可惜不会...

就用aar+echarts来表示下波形好了.

blob.png

上图是我在aar里直接调用C语言的那个卡尔曼产生的波形.

感觉不忍直视,算法肯定调用有错误,这个aar调用c函数看来应该不像想象中那样用....

var data1string ,data2string,data3string = "{data:[","{data:[","{data:[";	

//aardio调用C语言函数
var code = /****
#include <stdio.h>
#include <stdlib.h> 

long KalmanFilter(long ResrcData)
{
     /*-------------------------------------------------------------------------------------------------------------*/
     /*
             Q:过程噪声,Q增大,动态响应变快,收敛稳定性变坏
             R:测量噪声,R增大,动态响应变慢,收敛稳定性变好
     */
     /*-------------------------------------------------------------------------------------------------------------*/
     static long R = (int32_t)(128*1024);
     static long Q = (int32_t)4;
     static long Counter1 ;
     static long Counter2;
     static long x_last;
        static long p_last;   // 应赋初始估计值
     long x_mid;
     long x_now;
     long p_mid ;
     long p_now;
 
     ResrcData *= 1024;
     x_now = ResrcData - x_last;
     if(x_now < 0)
     {
         x_now *= -1; // 取绝对值
     }
     if(x_now >= 32*1024)   // 如果测量值连续比估计值大或小 相信测量值,加速迭代
     {
         Counter1++;
         Counter2 = 0;
         if(Counter1 > 10)
         {
             R = 512;;
             Q = 128;
         }
     }
     else                 // 数据比较稳定,加强滤波 
     {
         Counter1 = 0;
         Counter2++;
         if(Counter2 > 10)  
         {
             R = (int)(128*1024);
             Q = (int)4;
         }
     }
     x_mid = x_last;   // x_last=x(k-1|k-1),x_mid=x(k|k-1)
     p_mid = p_last + Q; // p_mid=p(k|k-1),p_last=p(k-1|k-1),Q=噪声
//    kg = p_mid/(p_mid + R); //kg为kalman filter,R为噪声
//    x_now = x_mid+kg*(ResrcData - x_mid);// 估计出的最优值
     x_now = x_mid + (p_mid*(ResrcData - x_mid))/(p_mid + R);
//    p_now = (1 - kg)*p_mid; // 最优值对应的covariance
     p_now = p_mid - p_mid*p_mid/(p_mid + R); // 最优值对应的covariance
     p_last = p_now;  // 更新covariance值
     x_last = x_now;  // 更新系统状态值
     x_now /= 1024;
     if((x_now > 4096)||( x_now < 0))
     {
         x_last = ResrcData;
         p_now = ResrcData;
         x_now = ResrcData/1024;
     }
     return (int)x_now;
}

****/
mainForm.button2.oncommand = function(id,event){
//mainForm.msgbox( mainForm.button2.text );

import console;
import tcc;  
console.open()

var vm = tcc( ); //创建TCC编译器 
vm.compile(code); //编译C源码

//调用C函数
var data1,data2 = 0,0;
for(i=1;179;1){
data1 = math.round(math.sin(math.rad(i))*500);
data2 = math.round(math.sin(math.rad(i))*500) + math.random(-5, 5);
var ret = vm.KalmanFilter(data2);
console.log( "C函数返回值2",data1,data2, ret )

data1string = data1string ++ data1 ++ ",";
data2string = data2string ++ data2 ++ ",";
data3string = data3string ++ ret ++ ",";
//console.more(50)
}




}

mainForm.button3.oncommand = function(id,event){
//mainForm.msgbox( mainForm.button3.text );


var datastr;
var datalist_start = "var option = { series:["
var datalist_end = "] }; myChart.setOption(option);";

datastr = datalist_start ++ data1string ++ "]},"++ data2string ++ "]},"++ data3string ++ "]}," ++ datalist_end;
wbKitView.doScript(datastr);
}

下面还是老老实实把C转换成aar语句去..

aardio软件开发上位机学习笔记2

admin 回复了问题 • 3 人关注 • 25 个回复 • 3452 次浏览 • 2017-06-13 13:23 • 来自相关话题

aardio开发上位机のwebkit界面设计

回复

admin 回复了问题 • 2 人关注 • 6 个回复 • 2149 次浏览 • 2017-05-02 09:22 • 来自相关话题

STM32CubeMX TIM如何设置编码器模式?

jialian4213 回复了问题 • 13 人关注 • 12 个回复 • 9036 次浏览 • 2017-04-28 09:21 • 来自相关话题

stm32cube好用

回复

stm32f103vct6 发起了问题 • 2 人关注 • 0 个回复 • 975 次浏览 • 2017-03-31 22:03 • 来自相关话题

请教各位:在此论坛哪里可以下载STM3ubeMX 软件

dd123 回复了问题 • 2 人关注 • 1 个回复 • 791 次浏览 • 2017-03-23 12:32 • 来自相关话题

求STM32Cube_fw_f2_v120

回复

yuwang734 发起了问题 • 1 人关注 • 0 个回复 • 993 次浏览 • 2017-02-20 09:14 • 来自相关话题

admin好屌,关注0人,被关注14494人

回复

熊猫仙 发起了问题 • 1 人关注 • 0 个回复 • 883 次浏览 • 2017-02-11 23:57 • 来自相关话题