- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
/*
*Author:Callon Huang
*Version:1.0
*Time:2014/11/5
*blog: /u/2451220761
*/
希望博客也能帮到你~
第一步:μcosII源码下载
/downloadcenter/
STM32固件库stm32f10x_stdperiph_lib.zip的下载
第二步:新建文件夹,并准备子目录:
其中Software是μcosII源码下载完成后拷贝过来的,其它的都自己新建.
App?用来存放应用程序文件,
Bsp?用来存放版级驱动文件,
Lib?用来存放?STM32?的标准外设库文件,
Source?用来存放uCOS?文件
第三步:把Software里的uCOS-II、uC-LIB和uC-CPU文件夹到Source里并把后两者拷贝到uCOS-II文件夹里,最后如下:
第四步:找到Software\EvalBoards\ST\STM32F103ZE-SK\IAR下的BSP文件夹,复制到Source文件夹下
第五步:找到Software\EvalBoards\ST\STM32F103ZE-SK\IAR下的OS-Probe-LCD文件夹,复制到Source文件夹下并改名为APP
第六步:解压下载好的stm32f10x_stdperiph_lib.zip固件库:
找到
stm32f10x_stdperiph_lib\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver下的inc和src文件夹并复制到Lib文件夹下
第七步:复制
stm32f10x_stdperiph_lib\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS下的CM3文件夹到Lib文件夹下
第八步:删除一些不需要的文件:
APP文件夹只需要:
BSP文件夹只需要:
在Software\CPU\ST\STM32里也有inc和src文件夹,但是比STM32固件库的要多两个文件
stm32f10x_systick.c和stm32f10x_systick.h
把这两个文件拷贝到SysTick文件夹下.
第九步:建立工程my_ucosII,把所有的.c文件和.asm文件都加进来:
‘
第十步:对工程进行一些设置:
Device就不用说了;
Target不变;
Output勾选上Create HEX File,并在
里选择Obj文件夹;
C/C++中
添加头文件所在路径,否则会出现大量如下编译错误:
头文件路径:
Libraries文件夹是这三个
最后这部分全部设置好后,如下:
最后总体设置完如下:
Debug里
最后
下载程序的时候,如果碰到
MDK中出现“Error Flash download failed-Cortex-M3”错误,可以通过上面的添加On-chip-Flash来解决。
其他没提的就不改变;
此时先修改部分代码做到最简化:
app.c:
#include stm32f10x_conf.h
#include os_cfg.h
#include ucos_ii.h
#include bsp.h
#define STARTUP_TASK_PRIO 4
#define LED1_TASK_PRIO 6
#define STARTUP_TASK_STK_SIZE 80
#define LED1_TASK_STK_SIZE 80
OS_STK startup_task_stk[STARTUP_TASK_STK_SIZE];
OS_STK led1_task_stk[LED1_TASK_STK_SIZE];
static void systick_init(void)
{
RCC_ClocksTypeDef rcc_clocks;
RCC_GetClocksFreq(rcc_clocks);
SysTick_Config(rcc_clocks.HCLK_Frequency/OS_TICKS_PER_SEC);
}
void led1_task(void *p_arg)
{
while(1)
{
LED1_ON();
OSTimeDlyHMSM(0,0,1,0);
LED1_OFF();
OSTimeDlyHMSM(0,0,1,0);
}
}
void startup_task(void *p_arg)
{
systick_init();
OSTaskCreate(led1_task,(void*)0,led1_task_stk[LED1_TASK_STK_SIZE-1],LED1_TASK_PRIO);
G
文档评论(0)