(转)hal库操作STM32写选项字节(option bytes)的正确方法

鑫盛庄 回复了问题 • 3 人关注 • 1 个回复 • 3514 次浏览 • 5 天前 • 来自相关话题

(转)USB复合设备和USB组合设备的区别和实现代码分析

洋沙 回复了问题 • 11 人关注 • 5 个回复 • 5624 次浏览 • 2018-09-15 22:33 • 来自相关话题

(转)开源按键处理项目:状态事件驱动按键驱动模块,按键事件的回调处理方式可以简化你的程序逻辑【MultiButton】

°別敷衍涐 回复了问题 • 6 人关注 • 2 个回复 • 2102 次浏览 • 2018-07-09 08:57 • 来自相关话题

分享一个keil配色方案

cqhejian 回复了问题 • 13 人关注 • 12 个回复 • 9757 次浏览 • 2018-05-29 23:41 • 来自相关话题

从keil4升级到keil5之后J-LINK自动升级导致闪退解决办法

y!ng 回复了问题 • 8 人关注 • 5 个回复 • 10939 次浏览 • 2018-05-22 10:01 • 来自相关话题

上位机编写之aardio调用html5图表控件

爱哭的热带鱼 回复了问题 • 8 人关注 • 19 个回复 • 3449 次浏览 • 2018-01-16 14:08 • 来自相关话题

aardio开发上位机学习启用独立域名了: www.htmlayout.cn , 请移步到此处学习!

回复

admin 发起了问题 • 1 人关注 • 0 个回复 • 381 次浏览 • 2018-01-04 21:31 • 来自相关话题

分享一个利用Cubemx直接生成Coide工程文件的小工具(欢迎提交bug)

super_meters 回复了问题 • 3 人关注 • 2 个回复 • 3816 次浏览 • 2017-10-18 09:17 • 来自相关话题

IAP调试前准备之什么是IAP?协议Ymodem是什么?运行机制是什么

仿如梦境 回复了问题 • 2 人关注 • 1 个回复 • 1816 次浏览 • 2017-10-14 19:01 • 来自相关话题

(转)从一个结构更加开放自由的 12864模块的设计过程,学习各种结构体和函数指针的使用

回复了问题 • 11 人关注 • 8 个回复 • 2570 次浏览 • 2017-09-26 13:43 • 来自相关话题

(自用)aar里面的一些基本功能笔记

admin 发表了文章 • 39 个评论 • 1484 次浏览 • 2017-09-14 13:29 • 来自相关话题

string库中的concat拼接字符串:这个函数提示里面只是显示了两个可用参数,实际应用过程中,可以添加无数个参数,,,都会拼接到一起的.str = string.concat(str,linestr[i],'\r\n',"aaadddggg");这个意思就是把括号里面的四个参数作为字符串拼接到了一起... 查看全部

string库中的concat拼接字符串:

blob.png

这个函数提示里面只是显示了两个可用参数,实际应用过程中,可以添加无数个参数,,,都会拼接到一起的.

str = string.concat(str,linestr[i],'\r\n',"aaadddggg");

这个意思就是把括号里面的四个参数作为字符串拼接到了一起...

(自用)AAR里一些好玩的功能

admin 发表了文章 • 65 个评论 • 2575 次浏览 • 2017-08-23 12:39 • 来自相关话题

最近aar作者Jacen He更新了一些新库:二维码和条形码的识别库Zbar//生成测试二维码
import qrencode.bitmap;
var qrBmp = qrencode.bitmap("http://www.stm32cube.com/#Stm32cube中文网" );
qrBmp.copyBitmap(100).save("/qrcode.jpg",80) 
 
//识别二维码    
import zbar;
import soImage; //此扩展库要使用最新版

var img = soImage();
img.load("/qrcode.jpg");//加载二维码图像
img.grayScale();
    
scanner = zbar.scanner();
scanner.config('qrcode.enable');//可省略

import console;
scanner.scan(img.getData(),img.getWidth(),img.getHeight(),function(typeName,data){
     console.log(typeName,data)
    })
     
    
console.pause();二维码和条形码的应用挺广泛的,这个库实用性很大,先前也实现过类似功能,不过用的调用js的方法. 查看全部

最近aar作者Jacen He更新了一些新库:

二维码和条形码的识别库Zbar

//生成测试二维码
import qrencode.bitmap;
var qrBmp = qrencode.bitmap("http://www.stm32cube.com/#Stm32cube中文网" );
qrBmp.copyBitmap(100).save("/qrcode.jpg",80) 
 
//识别二维码    
import zbar;
import soImage; //此扩展库要使用最新版

var img = soImage();
img.load("/qrcode.jpg");//加载二维码图像
img.grayScale();
    
scanner = zbar.scanner();
scanner.config('qrcode.enable');//可省略

import console;
scanner.scan(img.getData(),img.getWidth(),img.getHeight(),function(typeName,data){
     console.log(typeName,data)
    })
     
    
console.pause();

blob.png

二维码和条形码的应用挺广泛的,这个库实用性很大,先前也实现过类似功能,不过用的调用js的方法.

(转)设置stm32芯片的读保护来防止恶意读取代码的方法

admin 发表了文章 • 0 个评论 • 3180 次浏览 • 2017-08-08 20:12 • 来自相关话题

现在的MCU大部分都会提供读保护和写保护的功能。读保护:保护保存在MCU上的执行代码不会被调试/下载工具拷贝出来。STM32 读保护有三个等级 L0 L1 L2  L0 是没有保护,可以随意读出来的,一般调试过程中选择。在L0 状态可以设置成L1 或者L2,修改完成不会擦除芯片已有的代码;  L1 是可恢复读保护,L1-->L0状态,,会自动擦除已有的程序。L1->L2,这个设置还没有试过,(正常理解是不擦除);  L2 是不可恢复读保护,此状态下,不可恢复到其他的状态,同时芯片里的程序不能再升级 类似OTP了;  这个主要是保护代码不会被其他人恶意拷贝,保护原作者的权益。写保护: 保护存在MCU上的代码 不会被异常修改。正常的代码更新流程需要先失能对应的保护位,更新完成再次恢复之前的保护位。这个主要是保护程序正常运行的时候,不会被异常更改。如图的STM32 ST-LINK UNILITY 工具上的读写保护和一些用户设置,包括在调试的停时 看门狗是否继续计数等设置本文转自:http://www.stmcu.org/module/fo ... .html 我们利用这个读保护特性可以在程序中自由的上锁和解锁我们不需要设置什么按键检测,我们程序中有串口或者usb,spi等等通信的话,可以利用这个通信指令来解锁.我们在while之前加载读保护代码:int main(void)
{
    ....
      
    if(FLASH_GetReadOutProtectionStatus() != SET)
    {
        //FLASH_Unlock();不解锁FALSH也可设置读保护???
        FLASH_ReadOutProtection(ENABLE);   
    }
    ......
    while(1)
    {
       .....
     }
} 然后我们可以在通信程序里面进行指令解析然后,解锁读保护if(FLASH_GetReadOutProtectionStatus() != RESET)
{
FLASH_Unlock();
FLASH_ReadOutProtection(DISABLE);
}这种读保护操作应该是最简单的代码保护方式了吧?..... 查看全部

现在的MCU大部分都会提供读保护和写保护的功能。
读保护:保护保存在MCU上的执行代码不会被调试/下载工具拷贝出来。

STM32 读保护有三个等级 L0 L1 L2
 L0 是没有保护,可以随意读出来的,一般调试过程中选择。在L0 状态可以设置成L1 或者L2,修改完成不会擦除芯片已有的代码;
 L1 是可恢复读保护,L1-->L0状态,,会自动擦除已有的程序。L1->L2,这个设置还没有试过,(正常理解是不擦除);
 L2 是不可恢复读保护,此状态下,不可恢复到其他的状态,同时芯片里的程序不能再升级 类似OTP了
 这个主要是保护代码不会被其他人恶意拷贝,保护原作者的权益。

写保护: 保护存在MCU上的代码 不会被异常修改。

正常的代码更新流程需要先失能对应的保护位,更新完成再次恢复之前的保护位。
这个主要是保护程序正常运行的时候,不会被异常更改。
如图的STM32 ST-LINK UNILITY 工具上的读写保护和一些用户设置,包括在调试的停时 看门狗是否继续计数等设置

213322bzprzlmxxpzk2pkz.png

本文转自:http://www.stmcu.org/module/fo ... .html

 

我们利用这个读保护特性可以在程序中自由的上锁和解锁

我们不需要设置什么按键检测,我们程序中有串口或者usb,spi等等通信的话,

可以利用这个通信指令来解锁.

我们在while之前加载读保护代码:

int main(void)
{
    ....
      
    if(FLASH_GetReadOutProtectionStatus() != SET)
    {
        //FLASH_Unlock();不解锁FALSH也可设置读保护???
        FLASH_ReadOutProtection(ENABLE);   
    }
    ......
    while(1)
    {
       .....
     }
}

 然后我们可以在通信程序里面进行指令解析然后,解锁读保护

if(FLASH_GetReadOutProtectionStatus() != RESET)
{
FLASH_Unlock();
FLASH_ReadOutProtection(DISABLE);
}

这种读保护操作应该是最简单的代码保护方式了吧?.....

(转)aardio字符串模式匹配快速入门

回复

admin 回复了问题 • 1 人关注 • 9 个回复 • 1247 次浏览 • 2017-08-05 01:01 • 来自相关话题

(已弃)利用串口来模拟spi发送一定数量的上升沿脉冲

回复

admin 回复了问题 • 1 人关注 • 1 个回复 • 870 次浏览 • 2017-08-02 13:05 • 来自相关话题