摘要: 使用QT Createor + MSVC2013写程序时。我复制了一份之前OK的代码到新的工程中,工程名字和之前的工程一样,出现了奇怪的错误。开始程序总是崩溃,后来我删掉shadow build目录,重建程序后,又出现C1041的错误。 耽误一两个小时。 错误在于导入了同一个名字的工程到QT Cre 阅读全文
posted @ 2016-01-27 20:42 Weyne 阅读(1479) 评论(0) 推荐(0) 编辑
摘要: 先了解下如何使用PendSV异常。(为何要使用PendSV而不是其他的异常,请参考《cortex-M3权威指南》)1,如何设定PendSV优先级?NVIC_SYSPRI14 EQU 0xE000ED22NVIC_PENDSV_PRI EQU 0xFF LDR R0, =NVIC_SYSPRI14 ... 阅读全文
posted @ 2015-10-19 14:36 Weyne 阅读(17974) 评论(8) 推荐(0) 编辑
摘要: OK,继续向操作系统迈进。由简入繁,先实现两个小功能。第一个是system tick,第二个是任务切换(PendSV)。一个是操作系统的心跳,一个是操作系统的并发处理的具体实现。System tick,在裸机程序里面,这个功能一直是用来做延时功能用的,用STM32做项目,基本都会用到。这里不准备再从... 阅读全文
posted @ 2015-10-12 18:00 Weyne 阅读(2105) 评论(0) 推荐(0) 编辑
摘要: 要移植操作系统,汇编是道不得不跨过去的坎。所以承接上篇的思路,我准备用汇编写一个简单的闪烁LED灯的程式。以此练习汇编,为操作系统做准备。第一步,还是和上篇一样,建立一个空的文件夹。 第二步,因为是要用汇编来写程式,所以不需要启动代码,这里选择否。 第三步,建立一个.s文件,并把文件添加到工程中。 ... 阅读全文
posted @ 2015-10-08 13:35 Weyne 阅读(13472) 评论(3) 推荐(2) 编辑
摘要: 本文讲述的是如何从零开始,使用keil建立一个简单的STM32的工程,并闪烁LED灯,给小白看。第零步,当然首先你得有一个STM32的板子,其IO口上接了一个LED。。。第一步,建立一个文件夹0.0第二步,打开keil,建立工程在弹出来的对话框中选择你所用的STM32的芯片。在接下来弹出来的对话框中... 阅读全文
posted @ 2015-09-29 17:09 Weyne 阅读(30006) 评论(4) 推荐(1) 编辑
摘要: 预备知识: DCD指令:用于分配一片连续的字存储单元(32bit),并将表达式的值初始化给该字存储单元,类似于C中定义数组并初始化。比如: DCD 0 的意思是:分配一个字存储单元,并将该单元初始化为0。 分析: 在STM32的启动文件中可以看到有如下代码: EXPORT __Vectors __V... 阅读全文
posted @ 2015-09-29 14:03 Weyne 阅读(6658) 评论(0) 推荐(0) 编辑
摘要: 在使用STM32读取SD Card的文件时,总是会卡死在读函数那里res = f_read(&fsrc, gbuffer, sizeof(gbuffer)-1, &br);而且出现很奇怪的现象。若是我只定义全局变量BYTE gbuffer[TEMP_SIZE];// file copy gbuffe... 阅读全文
posted @ 2015-07-10 13:13 Weyne 阅读(3464) 评论(0) 推荐(0) 编辑
摘要: 看到一段代码typedef struct{ int (* initialize)(void);}FSMC_T;FSMC_T fsmc = { .initialize = initialize};static int initialize(void){ GPIOD->CRH.W ... 阅读全文
posted @ 2015-04-17 10:47 Weyne 阅读(536) 评论(0) 推荐(0) 编辑
摘要: 上次遇到一个问题:单片机要求P0.0=0时输出高电平,P0.0=1时输出低电平。明显这里需要加一个非门,但是加一个74HC04显得太耗成本,又没想到别的好办法,就搁置一边了。今天在复习数字电路时,看到非门介绍,找到了方法。可以用一个简单的三极管非门电路代替。将A接到单片机的P0.0,简单分析一下。当... 阅读全文
posted @ 2014-03-24 09:32 Weyne 阅读(743) 评论(0) 推荐(0) 编辑
摘要: 下面这段源码是因为习惯不好,出现不正确波形的例子。module pwm_division(reset,clkin,clkout); input reset,clkin; output clkout; reg clkout; reg[7:0] count; always @(posedge ... 阅读全文
posted @ 2014-03-21 09:19 Weyne 阅读(596) 评论(0) 推荐(0) 编辑