上位机编写之aardio调用html5图表控件
harvardx 回复了问题 • 18 人关注 • 21 个回复 • 8568 次浏览 • 2022-11-12 10:03
(转)从一个结构更加开放自由的 12864模块的设计过程,学习各种结构体和函数指针的使用
jesse_qiao 回复了问题 • 14 人关注 • 11 个回复 • 4674 次浏览 • 2021-02-22 21:20
STM32 离线人脸检测
bl2020 回复了问题 • 2 人关注 • 2 个回复 • 1031 次浏览 • 2020-08-18 15:22
分享一个产生随机数和数组的函数(感谢群友飞飞分享)
❦❦雲❦❦ 回复了问题 • 2 人关注 • 1 个回复 • 3121 次浏览 • 2019-04-15 17:21
分享一个keil配色方案
any012 回复了问题 • 16 人关注 • 13 个回复 • 27146 次浏览 • 2018-11-16 09:05
(转)hal库操作STM32写选项字节(option bytes)的正确方法
鑫盛庄 回复了问题 • 5 人关注 • 1 个回复 • 11450 次浏览 • 2018-11-09 10:55
(转)USB复合设备和USB组合设备的区别和实现代码分析
洋沙 回复了问题 • 22 人关注 • 5 个回复 • 13794 次浏览 • 2018-09-15 22:33
(转)开源按键处理项目:状态事件驱动按键驱动模块,按键事件的回调处理方式可以简化你的程序逻辑【MultiButton】
°別敷衍涐 回复了问题 • 6 人关注 • 2 个回复 • 4379 次浏览 • 2018-07-09 08:57
从keil4升级到keil5之后J-LINK自动升级导致闪退解决办法
y!ng 回复了问题 • 8 人关注 • 5 个回复 • 16310 次浏览 • 2018-05-22 10:01
aardio开发上位机学习启用独立域名了: www.htmlayout.cn , 请移步到此处学习!
回复admin 发起了问题 • 1 人关注 • 0 个回复 • 2197 次浏览 • 2018-01-04 21:31
分享一个利用Cubemx直接生成Coide工程文件的小工具(欢迎提交bug)
super_meters 回复了问题 • 4 人关注 • 2 个回复 • 6517 次浏览 • 2017-10-18 09:17
IAP调试前准备之什么是IAP?协议Ymodem是什么?运行机制是什么
仿如梦境 回复了问题 • 3 人关注 • 1 个回复 • 3943 次浏览 • 2017-10-14 19:01
(自用)aar里面的一些基本功能笔记
admin 发表了文章 • 39 个评论 • 4127 次浏览 • 2017-09-14 13:29
string库中的concat拼接字符串:
这个函数提示里面只是显示了两个可用参数,实际应用过程中,可以添加无数个参数,,,都会拼接到一起的.
str = string.concat(str,linestr[i],'\r\n',"aaadddggg");
这个意思就是把括号里面的四个参数作为字符串拼接到了一起...
(自用)AAR里一些好玩的功能
admin 发表了文章 • 65 个评论 • 8305 次浏览 • 2017-08-23 12:39
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作者
更新了一些新库:二维码和条形码的识别库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的方法.
(转)设置stm32芯片的读保护来防止恶意读取代码的方法
admin 发表了文章 • 0 个评论 • 13409 次浏览 • 2017-08-08 20:12
{
....
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 工具上的读写保护和一些用户设置,包括在调试的停时 看门狗是否继续计数等设置
本文转自: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);
}
这种读保护操作应该是最简单的代码保护方式了吧?.....