自从ARM keil升级到keil5系列版本后,Keil工具对操作系统,以及各种库文件的移植大大简化了
只需要动动手指,勾选一些库文件就能实现移植工作了。
1:假设你安装了keil 5.24(稍早点版本支持的os偏少),并且下载了你需要的支持包。
首先,安装KEIL5,简单 不作描述
其次,下载 PACK 简单不作描述(根据具体的STM32期间选型相应的DFP文件)
下载需要的middle
下载需要的ucosiii
假设你用MCU芯片是stm32f10x,就点击pack install 左边选择器件stm32f1系列,右边把你要用的OS,arm基本库,stm32f10x_DFP就是stm的库支持包,以及编译器自动在线更新好。
例如下图,我选择了DFP,CMSIS,编译器,middleware,uCOSIII, freertos9(最近在看这个,就顺手下了).
2: Keil创建工程
依次project-new project- 选择位置,选择器件,直到出现下面窗口,以前的教程都是让你直接点击cancel,然后去手动移植uCOS,手动安装库文件,这不是傻么。
按下图勾上core,startup,uCOSIII(还可以不用uCOS或者选择华为的liteOS,或者热门的FREERtos,前提是你在pack intall里面先在线安装了),点击确认,第一个工程就建设好了。
请注意上面的蓝色部分,stdPeriph Drivers ,这就是ST的官方库,点击进入,用到IO就勾上GPIO,用到串口就勾上Usart... 其中有2个是选了其他的就必选的。
一个是RCC,一个是framwork,记得只要都变绿了就正常了,如果没有,就看看坐下,那些是关联的,也勾上。
3:工程文件预览
下面是我的示例工程,我用到了GPIO口输出LED,模拟的时候可以看我的程序是否正常工作。
记住里面的带锁的文件是不建议你修改的,这些文件是你的keil工程公用的,在Keil目录下。
不带锁的文件都是给你修改的
RTE_Device.h是你的外设配置文件,打开后点击下面的config wizard标签,可以通过勾选来配置你的外设参数,例如使用端口,频率,复用映射之类的。
设置后会关联stm32f10x.conf.h,所以后者你不用管。
system_stm32f10x.c是系统初始化程序,新版本systeminit是自动调用,然后跳到main(的,你如果需要在main前初始化系统某些参数可以修改。
startup_stm32f10x_hd.s NVIC的中断映射表,非常关键,需要修改,后面会提到。
RTOS下面是uCOSIII的文件。
其中app_cfg.c是空文件,是你的app.c的头文件,不过我们一般都是用main.c main.h...
cpu_cfg.h 和 lib_cfg.g 是几个简单的CPU和Lib的参数,基本不用修改。
os_cfg.h 是OS的裁剪配置文件,就是关闭一些你用不上的函数和功能块,例如消息队列Q你没用这个功能,那么Q,Q的del,abort函数等,都能禁止,主要是减少代码大小用的。按需要修改
os_app_cfg.h 系统心跳频率,以及几个系统任务stat systick tmr idle的优先级,堆栈大小等的配置参数。按需要修改。
os_cpu.c.c 没错,整个OS就这一个.c能让你修改,因为这就是所有的空钩子函数,你需要用到就填写代码好了,还有systick中断处理函数也在这里。
4 创建app.c添加到source gourp1 喜欢就单击改个名字不叫source group1..
写上你的main函数,创建你几个任务。
例如任务1创建任务23,2亮闪烁LED1, 3闪烁LED2。
但是你会发现uCOS没工作。
uCOS工作,需要几个条件。
1:启用systick定时器。
OS_CPU_SysTickInit(9000); // 72M下,8分频,1ms心跳的初始值。
SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8); //上面自带的初始化频率是72M,这里选择外部时钟 HCLK/8
然后OSInit(); 创建主任务,OSStart();
2 中断向量映射
OS需要用到2个中断,一个是PendSV_handler,一个是SysTick_handler。
OS自带了这2个中断函数,但是名字是OS_CPU_PendSV_handler一个是OS_CPU_SysTick_handler.
以前的做法之一是把后面的改成前面的名字。但是这个新版本os_cpu_a.s是禁止修改的,说明keil不建议这样做。
你如果不想用系统的,就得自己写2个同名函数,但是没必要。
那么我们直接修改中断向量表文件,把startup_stm32f10x_hd.s 里面的PendSV_handler全替换成OS_CPU_PendSV_handler。
把SysTick_handler全替换成OS_CPU_SysTick_handler。 这个目的和结果和改名是一样的。
不同芯片的中断相连表文件会不同,如果不用OS,stm标准库以前带了个stm32f10x_it.c文件,里面就是几个系统中断的同名函数。
5.24是没有stm32f10x_it.c,bsp.c之类文件的。如果你没用到uCOS,就需要自己写这些函数了。
5 模拟仿真
按下面配置就能模拟仿真,并且监视IO波形图,如果有串口,还能监测串口。
上面的图2的配置是可以随时修改的,也就是你想加个ADC,勾上,想用其他的外设库,勾上,前提是你知道你勾上的是啥。。。。
Keil会自动把文件加到你的工程。牢记,带锁的文件肯定是不建议你修改的。
上一篇:STM32跑RTOS操作系统之ucosii串口中断实现
下一篇:关于stm32HardFault_Handler异常(死机)的处理
推荐阅读
史海拾趣
B+B SmartWorx的前身是B&B Electronics,一个在1981年成立的公司,起初主要为无线和有线网络提供设备连接解决方案。随着技术的快速发展,物联网和M2M连接的需求日益增长,B&B Electronics意识到必须进行创新以应对市场的变化。于是,公司开始致力于开发“边缘智能”技术,使网络连接设备更加智能、自主和响应迅速。这一创新转型使得公司在物联网行业中崭露头角,并在2015年决定将公司名称更改为B+B SmartWorx,以更好地反映其业务重心和技术方向。
2016年,B+B SmartWorx与研华达成合并协议,成为研华全球大家庭的一员。这次合并是双方战略发展的重要一步,研华看中了B+B SmartWorx在物联网和工业网通领域的深厚积累,而B+B SmartWorx则借助研华在亚洲的资源与经验,进一步拓展其全球市场。合并后,双方在产品开发、业务布局等方面进行了深度融合,共同推动工业物联网领域的发展。
2016年,B+B SmartWorx与研华达成合并协议,成为研华全球大家庭的一员。这次合并是双方战略发展的重要一步,研华看中了B+B SmartWorx在物联网和工业网通领域的深厚积累,而B+B SmartWorx则借助研华在亚洲的资源与经验,进一步拓展其全球市场。合并后,双方在产品开发、业务布局等方面进行了深度融合,共同推动工业物联网领域的发展。
面对未来,Facon充满信心。他们将继续秉承“创新、质量、服务”的理念,不断推动技术创新和产品升级。同时,Facon还将加强与国际同行的合作与交流,共同推动全球电子行业的发展。在未来几年内,Facon计划进一步拓展海外市场,提升在全球市场中的份额和影响力。他们相信,在不久的将来,Facon将成为全球电子行业中的佼佼者。
请注意,以上故事均基于假设的“Facon”公司构建,并非真实存在的公司发展历程。
Curtis Industries公司一直将品质管理作为企业发展的核心。公司建立了完善的品质管理体系,从原材料采购到产品生产、检测等各个环节都严格把控品质。同时,公司还引入了先进的生产设备和技术,确保产品质量达到行业最高标准。这种对品质的严格把控赢得了客户的信任和好评,也为公司的长期发展提供了有力保障。
随着全球环保意识的提高,Coil-Q积极响应绿色发展的号召,将环保理念融入公司的生产和经营中。公司投入大量资金研发环保材料和技术,优化生产工艺,降低能耗和排放。同时,Coil-Q还积极参与环保公益活动,推动行业的绿色转型。
把主机拆开除灰尘,想想顺便也把电源也除除灰,拆开一看,感觉哪个PFC有点不对,顺便拆开看看,由于这台电脑是第一次配的,是一款杂牌电源,当时那JS说230块机箱电源随便选,觉得有问题,不过当时没经验,也就没管那么多~ 凡来坛里的一看就知道, ...… 查看全部问答∨ |
STM32F103RC的USB与PC连不通芯片可以认到,D+加了1.5k上拉,D+,D-匹配电阻22ohm,程序用的是最新STM32_USB-FS-Device_Lib_V3.3.0 晶振用的是6M的,程序里面时钟配置都改了,usb时钟是48M 急求高人帮助啊~~… 查看全部问答∨ |
代码如下: always @(negedge clk or negedge rst_n) begin if(!rst_n) begin address <= 1 ...… 查看全部问答∨ |
|
Beaglebone学习之5-外围电路设计完成(含原理图和PCB) 最近公司事情太忙,迟到这么久的设计终于完成了,不然真的辜负EEWORLD和大家的信任了(板子和奖金都到手了),今天已经把板子发出去做,周末应该就能回来了,到时再分享硬件调试和软件开发细节 另外板子做了10块,有兴趣的我可以赠送几块出来,还有 ...… 查看全部问答∨ |
使用Ultra Librarian转换成altium designer的文件出问题 我在TI的28335DSP网页下载了bxl的封装文件,然后使用Ultra Librarian转换成altium designer的文件出问题,由于28335DSP原理图库是分部分的,但转换后只能出来第一部分,怎么解决这个问题啊?谢谢。… 查看全部问答∨ |
本帖最后由 qwqwqw2088 于 2015-6-16 10:05 编辑 《笑谈热设计》作者摒弃了科技图书一贯的公式推导加之仿真测试的写作形式,转而巧妙地利用高手过招聊天的方式向读者全面而立体地分享了他多年来的热设计经验,加之译者准确到位的翻译,可以让您在 ...… 查看全部问答∨ |