关闭
当前搜索:

Stm32F407与W5500用DMA通信

详见https://javakys.wordpress.com/2014/09/04/upgrade-w5500-throughput-on-nucleo-stm32f401re-using-spi-dma/...
阅读(5) 评论(0)

组件不能初始化的问题

RTT组件初始化步骤 1、在rt_config.h里面打开#idefine RT_USING_COMPONENTS_INIT宏开关。 2、在board.c的void rt_hw_board_init()添加#ifdef RT_USING_COMPONENTS_INIT rt_components_board_init(); #endif3、确保–keep .o(.rti_fn.) 已经...
阅读(22) 评论(0)

rt_kprintf没有输出的问题

rt_console_set_device(const char *name)是设置rt_kprintf的定向输出。如果出现没有输出的问题。可能是 1、串口还未初始化就先给rt_kprintf指定了输出的串口,而这时实际上是找不到该串口设备的,最终导致没有指定rt_kprintf的输出串口,造成finsh没有输出。#ifdef RT_USING_COMPONENTS_INIT rt_com...
阅读(24) 评论(0)

RTT CPU使用率计算

首先把cpu_usage_idle_hook函数添加到RT空闲钩子函数上,通过rt_thread_idle_sethook(cpu_usage_idle_hook); 函数实现,在添加钩子函数之后只有在进入空闲线程的时候才会执行此钩子函数cpu_usage_idle_hook, 然后在钩子函数里面,首先在进入 rt_enter_critical(); (关闭中断和调度)相当于CPU全速模式,计算t...
阅读(23) 评论(0)

canopen PDO传输疑问

最近做一个项目碰到的问题,系统中有三个can站,一主二从,主站为主控制模块,从站A控制电机A转动,从站B控制电机B转动,考虑命令传输的延迟,想把A和B的速度命令放到一条PDO里控制。 具体的配置如下: 主站TPDO配置 1A00[1] = 0x20c80110 1A00[2] = 0x20c80210 1A00[3] = 0x30020008 1A00[4] = 0x30070008从站...
阅读(24) 评论(0)

STM32F4 FPU简单设置

第一步: 在stm32f4xx.h中定义宏__FPU_PRESENT ; __FPU_USED #define __CM4_REV 0x0001 /*!< Core revision r0p1 */ #define __MPU_PRESENT 1...
阅读(200) 评论(0)

STM32F4串口DMA配置

在使用串口时,一般采用查询发送,中断接收。但当要接收一串很长的数据时,每收到一个字节进入一次串口中断,有可能会导致中断占用时间过长。如果有一种方式,能够让串口收完一串数据,才进一次中断,那将是对写底层驱动的人来说,是极其好的一件事。经过查资料看手册,发现可以采用串口空闲中断和DMA接收来实现这个功能。具体更详细的说明后续补充,现只贴出代码,以供参考。 调试的过程中发现几个问题: 1、要串口初始化...
阅读(140) 评论(0)

函数指针使用(转)

第一个例子说明指向函数的指针如何说明、赋值、调用。 #include #define TESTDATE 100 int func(int a)  /* func用于打印一个整数 */ { return printf("%d\n",a); } main() { int (*FunctionPionter)(int a); FunctionPionter = fu...
阅读(88) 评论(0)

自制cpu首贴

一直想写一个可以在pc上运行的操作系统,想从简单的8位cpu系统开始,但无奈现在市面没有这样的环境。几乎所有的操作系统(非嵌入式)讲解的书都是在虚拟机上运行的,这不是一个学工科的追求。我所需要的肯定是一台独立的硬件环境,编译好操作系统后,直接烧写进去,就可以运行的。既然这个硬件环境没有,为什么不自己搭建一下呢? 网上看到有国内牛人用74系列芯片搭出一个8位cpu,然后自己写编译器,开发应用程序。这不...
阅读(70) 评论(0)

文章标题

本人也是新手,下面是学习串口过程中自己的一点认识,与君共享。 STM32的串口有很多值得关注的地方。TEX、TC标志位的概念: TEX(Transmit data register empty)发送数据寄存器非空标志位 TC(Transmission complete)发送完成标志位 两个标志关系很密切同时又有很大的差别,串口发送需要两个寄存器,我们可以“看见”操作的是影子寄存器——即Dat...
阅读(86) 评论(0)

keil中自定义输出信息到编译窗口

写程序的过程中,会有不少的条件编译命令,但是条件编译过多会导致忘记了定义那些条件,排查起来也非常麻烦,有没有什么好的方法来查找是否是否有该定义呢? 答案是有的:那就# warning 和# error;具体如下:# warning "this is a warning message test" # error "this is a error message test"当程序编译到这个里的时候...
阅读(903) 评论(0)

__attribute__((packed))详解

1. __attribute__ ((packed)) 的作用就是告诉编译器取消结构在编译过程中的优化对齐,按照实际占用字节数进行对齐,是GCC特有的语法。这个功能是跟操作系统没关系,跟编译器有关,gcc编译器不是紧凑模式的,我在windows下,用vc的编译器也不是紧凑的,用tc的编译器就是紧凑的。例如: 在TC下:struct my{ char ch; int a;} sizeof(in...
阅读(75) 评论(0)

初探STM32掉电复位PDR

STM32F407 144脚封装的第143脚PDR,一直没有关注过,板子上是直接对其悬空处理,悬空到底对系统有没有什么影响,查看了STM32F4系列的技术手册也没有发祥有相关说明。只是说明了PDR脚要接到VDD或者VSS(根据芯片不同而不同),没有说明悬空会怎么样?若有大牛知道望告知一二不胜感激! PDR全称为power down reset,也就是掉电复位,RM0090参考手册上是这样描述的:...
阅读(1342) 评论(0)

sizeof 与数组

今天发现了一个小问题,函数形参定义为指针,然后传入了一个数组,在函数内部用sizeof得到数组的长度,发现一直是4不变,具体代码简化如下:void test1(uint8_t *buf) { printf("buflen:%d\n",sizeof(buf)); }uint8_t buf[10]=[1,2,3,4,5,6,7,8];int main() { test1(buf); }结果为...
阅读(103) 评论(0)

STM32烧熔丝

欢迎使用Markdown编辑器写博客最近一直在研究STM32加密的问题,偶然发现STM32具有类似烧死熔丝的操作,简要说明如下:下面是stm32f4xx参考手册中文版上的内容。(RM0090) 从以上可以看出,当向RDP寄存器写入0xcc时,将是永久性的不能用外部工具对其读写操作,但是用IAP升级的方式却可以来更新里面的APP。 利用库函数操作实际只需要3句话,F...
阅读(132) 评论(0)

关于STm32加密【转】

摘要: 知识产权的保护,如何让自已辛勤的劳动成果不被别人抄袭,采用有效的手段对IC加密是值得每一个设计者关注的问题。 当然,有人说,没有解不了密的IC,的确,解密是一项技术,只要有人类在不断的研究,它就有破解的一天;但是加密后的IC会增加破解的难度与破解成本,当破解的成本大于收益时,自然就会使破解者望而却步。 STM32芯片这两年销量很好,它的性能和价格都很不错,但如何对STM32进行加...
阅读(476) 评论(0)
    个人资料
    • 访问:3768次
    • 积分:160
    • 等级:
    • 排名:千里之外
    • 原创:12篇
    • 转载:4篇
    • 译文:0篇
    • 评论:0条
    文章分类