![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
单片机
文章平均质量分 77
lan120576664
现在很努力学习嵌入式的东东!
展开
-
让Pegasus天马座开发板实现超声波测距
把超声波测距功能也在Pegasus天马座开发板上实现。于是在箱子里找到了,Grove - Ultrasonic Ranger 这一超声波测传感器。原创 2023-09-21 20:50:32 · 516 阅读 · 0 评论 -
让Pegasus天马座开发板吃上STM8S标准库
WeCanStudio官方仓库的示例工程,只提供基于STM8S003寄存器方式来开发Pegasus天马座开发板。在此,我将基于官方的工程示例,将STM8S标准库移植到工程中。先上图,看运行结果:main.c文件。原创 2023-09-19 12:43:15 · 199 阅读 · 0 评论 -
Keil5.15版本
Keil5.15下载地址 http://pan.baidu.com/s/1kT6AGvXKeil5.15软件补丁下载地址 http://www.keil.com/dd2/pack/Keil5.15破解软件下载地址 http://download.csdn.net/detail/lan120576664/8858261原创 2015-07-01 15:03:34 · 3692 阅读 · 1 评论 -
Keil5.15使用GCC编译器编译STM32工程
我们使用Keil一般使用ARMCC编译MCU工程代码.其实,Keil也是支持内嵌GCC编译器的.我们可以使用GCC来编译我们的工程代码.下载GCC编译器GCC编译器下载地址 安装GCC我们可以把GCC解压到keil的安装目录下面.如下图配置Keil使用GCC编译器配置CC编译规则,Misc Controls 填写 -mcpu=cortex-m4 -mthumb -fdata-section原创 2015-07-08 18:44:04 · 40799 阅读 · 32 评论 -
Keil建立STM32项目工程
一、增加STM32项目文件分组 二、增加头文件夹三、增加预编译四、增加用户代码文件如,增加main.c/stm32f4xx_it.c文件五、需要类似错误解决问题A: Fatal error: A1023E: File “C:\Users\6?1?ppData\Local\Temp\p88c-2” could not be opened: No such file or directory这个原创 2015-07-01 18:38:34 · 5895 阅读 · 2 评论 -
Keil5.15使用GCC编译器链接.a库文件
我们知道,当使用第三方的代码时,人家有可能会扔个Lib文件给你.这时候,别人只要提供header文件给你,则你就可以通过Lib文件及header的函数声明,对Lib中的函数进行调用.在Keil中如果使用ARMCC调用Lib文件,相信大家都能从网上找到方法.那如果在Keil中使用GCC来链接第三方GCC编译好的Lib文件——".a"应该如何呢?在告诉大家方法之前,我们写个简单的函数,然后用GCC编译器原创 2015-07-10 11:49:45 · 13492 阅读 · 1 评论 -
Microsoft .NET Micro Framework 4.0语法
一、基本概念 一般而言,一个程序包括只读的代码段和可读写的数据段。只读的代码段和常量被称作RO段(ReadOnly);可读写的全局变量和静态变量被称作RW段(ReadWrite);RW段中要被初始化为零的变量被称为ZI段(ZeroInit)。对于嵌入式系统而言,程序映象都是存储在Flash存储器等一些非易失性器件中的,而在运行时,程序中的RW段必须重新装载到可读写的RAM中。这就涉及到程转载 2014-12-23 17:49:49 · 1156 阅读 · 0 评论 -
Quectel GSM模块串口通信电平匹配
在硬件设计串口通信时候,经常会出现电平匹配的问题.如今,在自己的GSM应用产品设计中也出现这样的问题.参考Quectel GSM模块串的硬件设计datasheet,可以找到相应的解决方法.3.3V连接方法:5V连接方法:与电脑连接使用232电平转换来自:http://blog.csdn.net/lan120576664原创 2015-07-12 11:55:46 · 2764 阅读 · 0 评论 -
STM32的硬件CRC32使用
最近用到STM32的CRC32模块,看一下官网的Lib,感觉用起来十分简单.但是,你会发现直接使用起来会出现,与很多在线CRC32的网站或者PC端的CRC32校验工具计算结果不一致!简直就是无语......搜索了一下,在21IC的论坛上面有关使用STM32的CRC32的大讨论,不过是09年的帖子.主要定论是STM32的CRC32与目前大多数的PC端软件使用的一些数据顺序及方法不一致.这里主...原创 2015-07-30 21:02:24 · 34409 阅读 · 4 评论 -
I2C通信流程
在网上看到一个不错的I2C通信流程图,以AT24C04为例.原创 2015-08-12 19:05:51 · 2093 阅读 · 0 评论 -
STM32F030 WWDG使用结论
使用STM32F030的WWDG,发现其在STOP下面跟STM8S的休眠模式的情况一样,不会对MCU进行复位.贴上看门狗代码:/***************************************************************************************************************************原创 2015-08-02 20:05:39 · 2889 阅读 · 0 评论 -
STM32F030系列UID
STM32F030这个芯片的除了有MCU DEVICE ID外,还有其他芯片都存在的UID.因为该芯片的编程手册没有提及这个UID,但是从自己测试的结果来看,在0x1FFF F7AC这个MEMORY地址上面.有16个字节的UID.测试两个不同的芯片结果如下图:来自:http://blog.csdn.net/lan120576664原创 2015-06-27 12:45:15 · 5292 阅读 · 1 评论 -
STM32 SPI SLAVE
一般使用SPI都用MASTER,但是用SLAVE没有用过.参考了ST的例子,发现不能满足自己的使用.于是,自己修改了一下.初始化配置SPI/** ****************************************************************************** * @file app.c * @author MCD...原创 2015-06-24 18:49:59 · 10942 阅读 · 0 评论 -
netduino制作dfu升级文件
然后直接点生成即可.来自:http://blog.csdn.net/lan120576664原创 2014-12-24 15:11:12 · 972 阅读 · 0 评论 -
Microsoft .NET Micro Framework4.3编译环境搭建
1、安装KEIL4.54版本路径为C:\Keil2、安装.NET MF 4.3 RTM (QFE1)PK路径为C:\MF\PK\3、将安装好的PK目录备份一份4、拷贝netduino 2 firmware v4.3.1 source里面的文件到C:\MF\PK\目录下5、将Release_Flash.bat拷贝到PK\Solutions\NetduinoPlus2目录下6、调用原创 2014-12-23 17:53:06 · 2589 阅读 · 1 评论 -
netdiuno MF4.3编译错误情况解决
1、error MSB3073: 命令“ --cpp --diag_suppress 2874,111,161,550,C3011 该问题应该为编译器问题 a、安装keil4.54版本 b、调用call setenv_mdk.cmd 4.54 c:\keil\arm 2、 EXEC : error : L6220E: Load region LR_FLASH原创 2014-12-23 17:54:29 · 4048 阅读 · 0 评论 -
netduino无法调试运行应用情况解决
用VS2013写个点灯程序,发现VS2013一运行就退出.....调试信息输出如下“[7] Micro Framework application: 托管”已退出,返回值为 0 (0x0)另外DEVICE DEPLOYMENT有如下输出Looking for a device on transport 'USB'Starting device deployment...原创 2014-12-26 11:48:10 · 1069 阅读 · 0 评论 -
netduino应用环境VS2013搭建
首先当然先下载所需的安装软件,VS2013 MicroFrameworkSDK netduinosdk三个东西安装顺序1、安装VS2013 2、安装MicroFrameworkSDK3、安装netduinosdk安装完毕之后,打开VS2013打开新建工程,可以看到相关的选项.如上图...此时,如果你编译会发现编译可以通过,但是无法调试到原创 2014-12-11 17:41:44 · 908 阅读 · 0 评论 -
netduino plus 2使用interop出现MMP : error MMP0000: CLR_E_FAIL错误解决方式
参考文章http://www.newlifex.com/showtopic-1319.aspx实现了interop的方法,但是编译一致过不去.老是报MMP : error MMP0000: CLR_E_FAIL的错误.上百度及谷歌找过一些类似的问题,但是都没有解决方案.后面我重新看了一下,interop的配置文件.featureproj发现用vs2013生成的文件内容原创 2015-02-14 13:07:34 · 1196 阅读 · 0 评论 -
一、在.net micro framework中增加LibTom加解密算法
思路.按照.net的方式新建一个供C#调用的C接口,然后通过C接口调用LibTom的加解密算法。1、C#调用C方法,请参考.net micro framework提供的资料进行2、修改工程的dotNetMF.proj文件,然后把LibTom的必要文件加上,要添加那些文件可以,参考使用Libtomcrypt RSA/ECC等加密算法到项目中3、然后重新编译固件,此时你会发现好多问题.原创 2015-05-27 14:08:16 · 1106 阅读 · 0 评论 -
二、在.net micro framework中增加LibTom加解密算法
把LibTom加入到工程后,可以顺利编译通过.通过USB下载到板子上面,开心地调用RSA算法,发现有去无回..net micro framework调试c/cpp代码是非常不方便的,还好牛人已经给我探索出了方法.MDK结合JLINK在调试C/CPP Native工程用这个调试,发现,libTom使用calloc或者malloc动态分配空间时候,竟然把BUFFER分配到Fla原创 2015-06-01 12:34:34 · 955 阅读 · 0 评论 -
STM8S定时器溢出及重装载理解
一直理解STM8S定时器有点问题,所以在做定时器时候,出现了好奇怪的问题.比如,今次在理解预装载值时候出现问题,导致动态调整预装载值均无法得到自己预期的效果.我们可以看参考手册定时器这块的描述,或者上网找一些文章.在此,推荐一下微雪针对这块写的文章,大家看完应该有所了解.微雪电子-STM8 时基单元而我碰到的问题,主要理解的两句话就可以解决我的疑惑.向上计数模式 在向上计数模式中,计数器从原创 2015-07-22 12:32:08 · 7271 阅读 · 0 评论 -
linux下安装使用protocol buffer编译工具
编译脚本#!/bin/shprotoc-c xxxx.proto --c_out=c安装方法sudo apt-get install protobuf-c-compiler原创 2015-10-19 17:31:47 · 2533 阅读 · 0 评论 -
ucosii 消息队列的应用
由于某个项目做二次开发,别人用的是UCOS这个嵌入式操作系统.也因为产品的消息处理的需求,所以考虑使用ucos的消息队列方式来实现功能.感觉ucos跟wince或者windows下的消息使用方式还是挺类似.不知道是不是由于都是属于消息队列的范畴的原因. 关于ucos的原理,网上有很多资料都有介绍,这里也不过多的介绍.直接贴结果与代码。 先看运行结果吧:RecvMsq原创 2016-07-07 18:29:03 · 1297 阅读 · 0 评论 -
stm32 BOOTLOADER 导出函数给APP调用出现malloc无法分配内存的问题
实现IAP升级APP这个功能没有什么问题,但是想把APP中相对固定的函数移植到bootloader中,从而减少APP空间代码,减少升级时间。APP通过调用bootloader导出的函数接口,实现相关功能的调用。代码举例在bootloader导出如下接口给APP使用int exp_forapp_A(void){int k = 5;return k;}int exp_forapp_...原创 2016-07-19 17:05:52 · 1735 阅读 · 2 评论 -
移植ucos出現 Error: registers may not be the same -- `strexh r3,r2,[r3]' 處理
移植ucos在gcc的編譯環境,出現以下錯誤Error: C:\Users\jack\AppData\Local\Temp\cch0iNvt.s:869: Error: registers may not be the same -- `strexh r3,r2,[r3]'參考github代碼https://gist.github.com/timbrom/1942280...原创 2017-01-23 13:28:58 · 2431 阅读 · 0 评论 -
keil出現 Error: Flash Download failed: - "Cortex-M3" 問題解決
有時候切換了編譯方式如從ARMCC轉變為GCC編譯器,編譯下載時會出現Error: Flash Download failed: - "Cortex-M3"這個錯誤。目前,自己測試解決的方式是:刪除相同目錄下的“DebugConfig” 、“Listings"、“Objects”、“JLinkLog.txt”、“JLinkSettings.ini”然後重新設置調原创 2017-01-24 13:18:53 · 6371 阅读 · 0 评论 -
命令行下通过jlink烧录Navota小记
以下是Navota官方提供的烧录txt的执行步骤r#unlock kinetissi 1 speed 4000device NV32F100rhloadbin ./flash/swdg.bin 0x1ffff800setpc 0x1ffff800 ghloadbin ./flash/nv32f.bin 0x1ffff800hloadbin ./flash/gpio....原创 2017-07-12 18:22:35 · 5929 阅读 · 0 评论 -
任务切换的精华思想
在21IC论坛上,无意中看到介绍简单OS的实现,感觉不错,抄下来.#include #define MAX_TASKS 2 //任务槽个数.必须和实际任务数一至 #define MAX_TASK_DEP 12 //最大栈深.最低不得少于2个,保守值为12. unsigned char idata task_stack[MAX_TASKS][MAX_TASK_DE转载 2017-08-30 11:58:44 · 471 阅读 · 0 评论 -
CubeMX工具生成的SDIO DMA代码无法工作
近排在学习使用ST的CubeMX工具,于是拿原子电子的板子做软件调试目标板子做测试。 从移植串口、FreeRTOS等待都非常顺利,但是在做SDIO移植的时候发现一个奇怪的现象,每次写卡的时候,都会收到一个错误的回调。于是在21IC的ST论坛上面发表了相关帖子。 也非常感谢21IC的网友huzi2099 帮助。 相关的帖子在 http://bbs.21ic.com/...原创 2018-04-16 16:57:32 · 1135 阅读 · 0 评论 -
非常不错的STM32 FMC的内存映射及SDRAM的DQM的控制理解
https://blog.csdn.net/wisepragma/article/details/51622606转载 2018-04-20 17:50:48 · 2725 阅读 · 0 评论 -
关于STVP写保护等级2的问题
产品使用ST的STM32F405做主控,在发布产品时候,需要将保护等级调整到最高. 之前碰到,如果连接reset脚到stlink的话,会出现在烧写好后复位芯片。那么这样就会出现在最高等级保护时候,并真正烧写到最高等级保护。所以我在产品设计时候,没有连接reset脚到MCU,就可以烧录到最高等级保护了。 那么今次又出现同样的复位的问题.是由于烧录完成之后STVP原创 2016-06-16 19:08:57 · 1710 阅读 · 0 评论 -
keil For ARM 函数绝对定义
我写了一个函数,我要把它放到FLASH 的第31区,地址为0x0801F000 这个地方,我在网上搜了一个方法。虽然达到了效果网上说加个__at;且包含头文件#include "absacc.h"这种方法只适用于 数组的绝对定义。方法如下:u8 TestBUF[8] __at(0x0801F000 )={0X34,0X66,0X03,0X34,0X23,0X77,0X77,0X77}转载 2016-06-27 15:55:31 · 2224 阅读 · 0 评论 -
Keil如何生成bin文件【Keil生成Bin文件的方法】
使用过Keil的同鞋都知道,现在Keil中默认可以输出.axf的调试文件和可以通过钩选输出的.hex可执行文件,没有bin(二进制)文件的输出选项。可是偏偏某些时候需要或者习惯性的使用.bin文件来进行烧写,下面各举一例:1. 一直使用ADS的用户习惯性的使用.bin文件;2. 某些烧写器带的应用软件只支持.bin文件;3. 正如笔者遇到的情况,我在使用STM32公司提供的转载 2016-06-27 13:39:58 · 3445 阅读 · 0 评论 -
STM32芯片二级保护的问题
今天在开发板上,想测试官网的ISP能否解除芯片保护。没有想到在使用STVP,在选择选项字时候,没有看清楚,直接选择了芯片二级保护,然后BOOT1这个位又选择了1.导致外面跳线BOOT0为1时,启动方式为SRAM方式.导致ST-LINK一致无法连接.因此,在21IC论坛上面发了问题,但是没有人回答.不过后面在QQ群,上面找一个高手解答了问题.具体问题及解释,可以跳转到21IC的帖子上原创 2015-09-28 18:36:19 · 2676 阅读 · 0 评论 -
.net micro framework Netduino无法休眠
这几天在做产品的休眠模式.在C#应用程序代码中调用PowerState.Sleep(SleepLevel.DeepSleep, HardwareEvent.GeneralPurpose);1、发现一旦调用该代码,程序就无法唤醒(当然我是有设置IO外部中断唤醒的). 针对该问题的解决方式: 经过调试发现,由于KEIL4的编译问题,只需在驱动代码出增加一些变量或者打印信息,可以解决.原创 2015-09-15 19:47:39 · 1023 阅读 · 0 评论 -
netduion Pluse 2启动需要5s以上问题解决
使用netduon做.NET MICRO FRAMEWORK做产品开发,发现每次调用到C#的时间都是需要超过5s以上。最近产品已经小PP了,所以有必要查看一下什么原因造成的?或者加载微软那个框架需要5s?调试了好久,发现“CLRStartup.cpp”文件下的 HRESULT Initialize(CLR_SETTINGS params)函数会调用到 CLR_DBG_Debu...原创 2015-09-30 20:03:13 · 720 阅读 · 0 评论 -
STM8S AWU与WWD配合
在产品做低功耗的时候,我们会采用一些方法做一些低功耗处理.但是做了低功耗之后,又担心程序异常跑飞,而无法自动复位。如果我们开启了IWDG独立看门狗,做低功耗的话,那么很难做得很好。因为,你需要想办法不停地给这只狗喂东西。导致低功耗效果不会很理想。而如果采用AWU与WWDG窗口看门狗来做的话,效果还是不错的。因为WWDG看门狗可以在AWU停止时,也可以设置不产生复位信号。设置方法如下原创 2015-10-18 17:03:08 · 3065 阅读 · 0 评论 -
STM32共用中断线的外部中断引脚的判断
今天在产品中使用在STM32外部中断配置时,把PA10 和PA10都配置成中断模式,中断线EXTI_Line10,那么在EXTI15_10_IRQHandler.上网找了一下,21IC的一个帖子解决了我的问题:点击打开链接总结:修改硬件,不能让其使用共同的中断处理。原创 2015-11-06 17:07:16 · 8210 阅读 · 0 评论 -
使用Libtomcrypt RSA/ECC等加密算法到项目中
LibTomCrypt是一个非常不错的加解密开源库,支持C/C++编译,可以支持跨平台.更详细的信息请参考其官网:http://www.libtom.net/一、材料准备1、libtomcrypt2、libtommath二、将项目增加到自己的项目工程中以IAR为例子,直接上图片.另外include路径按照自己项目存放的文件夹路径进行放置,以下是我自己的目录引用情...原创 2015-05-27 14:00:00 · 6469 阅读 · 0 评论