历史上的今天

今天是:2024年08月23日(星期五)

正在发生

2019年08月23日 | 移植freeRTOS V10.2.0到stm32f103zet6

发布者:BoldDreamer 来源: eefocus关键字:移植  freeRTOS  V10  stm32f103zet6 手机看文章 扫描二维码
随时随地手机看文章

应用FPU 


1、工程文件


startup_stm32f40_41xxx.s 


新建一个 test.c 文件,并保存在 USER 文件夹下


2、工程文件夹


USER 文件夹专门用来存放启动文件(startup_stm32f40_41xxx.s)、工程文件(test.uvprojx)等不可缺少的文件,


OBJ 则用来存放这些编译过程中产生的中间文件(包括.hex 文件也将存放在这个文件夹里面)


 SYSTEM文件夹,该文件夹由 ALIENTEK 提供,可以在光盘任何一个实例的工程目录下找到


3、工程分组


 Target 目录树上点击右键  Manage Project Items


我没改文件夹,还是用原来Objects,Listings


4、设置


图中 1 处设置的 STM32F40_41xxx 宏,是为了兼容低版本的 MDK(比

如 MDK4/MDK3 等)才添加的,MDK5 在你选择器件的时候,就会内部定义这个宏,因此在MDK5 下面,这里不设置也是可以的。但是为了兼容低版本的 MDK,我们还是将这个宏添加进来。


图中 2 处是编译器优化选项,有-O0~-O3 四种选择(default 则是-O2),值越大,优化效果越强,但是仿真调试效果越差。这里我们选择-O0 优化,以得到最好的调试效果,方便开发代码,在代码调试结束后,大家可以选择-O2 之类的优化,得到更好的性能和更少的代码占用量。


图中 3 处,One ELF Section per Function 主要是用来对冗余函数的优化。通过这个选项,可以在最后生成的二进制文件中将冗余函数排除掉,以便最大程度地优化最后生成的二进制代码,所以,我们一般勾选上这个,这样可以减少整个程序的代码量。


然后在 Include Paths 处(4 处),点击 5 处的按钮。在弹出的对话框中加入 SYSTEM 文件夹下的 3 个文件夹名字,把这几个路径都加进去(此操作即加入编译器的头文件包含路径,后面会经常用到)。如图 3.2.22 所示:


编译遇到错误:


SYSTEMusartusart.c(38): error:  #260-D: explicit type is missing ("int" assumed)


解决:


函数前加void,这是printf函数的相关定义


void _sys_exit(int x)


warning:#1-D last line of file ends without a

newline。这个警告是在告诉我们,在某个 C 文件的最后,没有输入新行,我们只需要双击这个

警告,跳转到警告处,然后在后面输入多一个空行就好了。



SYSTEM文件夹


1、delay


顾名思义:延时函数文件夹


***************SysTick定时器*****************着重理解


RTOS会用到

sys文件夹


 sys.c 和 sys.h 是由 ALIENTEK 提供,而其他 6 个文件,则都是拷贝自 STM32F4 的 CMSIS 库文件


 sys.h 


实现对 STM32F4 各个 IO 口的位操作,包括读入和输出


 PORTA的第七个 IO 口输出 1,则可以使用 PAout(6)=1;即可实现。我要判断 PORTA 的第 15 个位是否

等于 1,则可以使用 if(PAin(14)==1)


////////////////////////////////////////////////////////////////////////////////// 

u8 Sys_Clock_Set(u32 plln,u32 pllm,u32 pllp,u32 pllq); //系统时钟设置

void Stm32_Clock_Init(u32 plln,u32 pllm,u32 pllp,u32 pllq); //时钟初始化  

void Sys_Soft_Reset(void);      //系统软复位

void Sys_Standby(void);          //待机模式

void MY_NVIC_SetVectorTable(u32 NVIC_VectTab, u32 Offset); //设置偏移地址

void MY_NVIC_PriorityGroupConfig(u8 NVIC_Group); //设置NVIC分组

void MY_NVIC_Init(u8 NVIC_PreemptionPriority,u8 NVIC_SubPriority,u8 NVIC_Channel,u8 NVIC_Group);//设置中断

void Ex_NVIC_Config(u8 GPIOx,u8 BITx,u8 TRIM); //外部中断配置函数(只对GPIOA~I)

void GPIO_AF_Set(GPIO_TypeDef* GPIOx,u8 BITx,u8 AFx); //GPIO复用功能设置

void GPIO_Set(GPIO_TypeDef* GPIOx,u32 BITx,u32 MODE,u32 OTYPE,u32 OSPEED,u32 PUPD);//GPIO设置函数  

//以下为汇编函数

void WFI_SET(void); //执行WFI指令

void INTX_DISABLE(void);//关闭所有中断

void INTX_ENABLE(void); //开启所有中断

void MSR_MSP(u32 addr); //设置堆栈地址 

#endif

 


************************时钟配置************************************


 


usart 文件夹


 usart.c 和 usart.h 两个文件。这两个文件用于串口的初始化和中断接收


usart.c里面包含了2个函数一个是void USART1_IRQHandler(void);另外一个是void uart_init(u32

pclk2,u32 bound);里面还有一段对串口 printf 的支持代码,如果去掉,则会导致 printf 无法使


 


在配置 STM32F4 外设的时候,任何时候都要先使能该外设的时钟!


RCC->AHB1ENR|=1<<5;//使能 PORTF 时钟


 


I/O   输出I 输入


1、使能时钟


2、IO设置   void GPIO_Set(GPIO_TypeDef* GPIOx,u32 BITx,u32 MODE,u32 OTYPE,u32 OSPEED,u32 PUPD)


//GPIO通用设置 

//GPIOx:GPIOA~GPIOI.

//BITx:0X0000~0XFFFF,位设置,每个位代表一个IO,第0位代表Px0,第1位代表Px1,依次类推.比如0X0101,代表同时设置Px0和Px8.

//MODE:0~3;模式选择,0,输入(系统复位默认状态);1,普通输出;2,复用功能;3,模拟输入.

//OTYPE:0/1;输出类型选择,0,推挽输出;1,开漏输出.

//OSPEED:0~3;输出速度设置,0,2Mhz;1,25Mhz;2,50Mhz;3,100Mh. 

//PUPD:0~3:上下拉设置,0,不带上下拉;1,上拉;2,下拉;3,保留.

//注意:在输入模式(普通输入/模拟输入)下,OTYPE和OSPEED参数无效!!


3、PFout(n)   PFin(n)

 


串口


STM32F4 的串口使用起来还是蛮简单的,只要你开启了串口时钟,并设置相应 IO 口的模式,然后配置一下波特率,数据位长度,奇偶校验位等信息,就可以使用了,


uart_init(84,115200);  //串口初始化为 115200


关键字:移植  freeRTOS  V10  stm32f103zet6 引用地址:移植freeRTOS V10.2.0到stm32f103zet6

上一篇:STlink下载,供电与重启才能运行的问题与其它
下一篇:STM32单片机(五)-寄存器地址理解和控制LED闪烁

推荐阅读

据媒体报道指华为已重设电视项目小组,电视项目小组已开始找人,华为也正与面板企业商谈合作,而且华为消费者BG CEO余承东表示华为消费者业务的全新战略即“全场景智慧生活生态战略”也需要电视这种产品,种种迹象均显示它将进入电视行业。  国产电视品牌崛起推动国产芯片企业的发展  目前中国已是全球最大的电视市场,2017年中国电视销量达到4752万...
8月22日,美国《芝加哥论坛报》近期对热门智能手机的射频辐射水平进行了调查,发现某些型号iPhone的射频辐射超过安全极限。测试结果显示,多款iPhone的辐射水平超过法定安全极限,其中表现最差的是iPhone 7。这款手机的射频辐射暴露超过法定极限,是苹果向美国联邦监管机构报告数字的两倍多,即使在调整测试后数据iPhone 7的数据仍然是超标。对此,苹果...
周四,SamMbile 报道称,三星计划在近期内推出智能手机新品——三星 Galaxy M51,该机将会率先于印度和俄罗斯市场发售。  报道提到,三星当地市场的官网目前已经出现了 Galaxy M51 的支持页面,该机将搭载 6.65 英寸的 AMOLED 屏幕,供应商为华星光电,分辨率为 Full HD+。  硬件方面,三星 Galaxy M51 搭载骁龙 730 处理...
首先看看我的板子,(s3c2440)可以看出,要使LED灯管亮,只要将nLED1置为低电平即可,就是将对应的GPIO引脚置为低电平。从上面两幅图可以发现,LED1、LED2、LED4对应着S3c2440的GPF端口,于是,通过查询手册可以知道对应寄存器的地址。于是可以开始编程了.text.global _start_start: @将GPF配置为输出引脚 LDR R0, =0x56000050 MOV R1, #0x00005500 ...

史海拾趣

问答坊 | AI 解惑

信产部验收大唐TD结论:关键技术都已实现

  新浪科技讯 12月24日消息,知情人士透露,日前,信产部至少对TD-SCDMA进行了两个方面的总结,一方面是对TD-SCDMA友好用户放号第一阶段的总结,另一方面是对大唐移动承担的TD-SCDMA项目进行验收。而两方面的结论都类似,即“TD-SCDMA的关键技术 ...…

查看全部问答∨

电子大赛本科组题目公布

本帖最后由 paulhyde 于 2014-9-15 09:34 编辑 这是本次大赛本科组的题目,大家来看看吧,讨论讨论  …

查看全部问答∨

关于FFT的问题请教高手!!!急!!!

关于FFT的问题请教高手!!!急!!!请教高手一个问题,非常着急,希望明白的给个回答,先谢谢大家了!!! 我最近下载了一个FFT算法的Verilog程序,在看到旋转因子这个地方怎么也不明白,程序如下: always @ (posedge clock_c)   i ...…

查看全部问答∨

请大虾给封装属性

想知道常用原器件的封装属性,那样,在画扳子感觉累的时候,可以用3D看看,放松下,但我知道的封装属性不是很全面,3D出来的,很多都不知道是什么东东,希望大虾能给个比较全面的,常用的原器件封装属性,我用的是99 SE…

查看全部问答∨

让你不再害怕指针

不知道有没有人发过,感觉还不错…

查看全部问答∨

超越工程师们期待的一款频谱分析仪!

AgilentN9000A CXA信号分析仪是一款用于基本信号表征的通用经济型工具。它能从多方面帮助您加快产品的测试与开发:降低成本、提高吞吐量和增强设计功能等。在 CXA 中能够获得基本测量功能以及 X 系列的出色可扩展性――超越您的期待。…

查看全部问答∨

单片机的IO输出的问题

最近在做单片机的一个模拟试验,碰到一个让我很费解的情况。我把芯片的GPIO口连到JTAG的管脚上,当我对GPIO口进行方波输出时(即对GPIO的管脚依次写入0XFF和0X00,并延时几个周期)在示波器上显示正常的波形。但当我模拟JTAG的时序输出是,在示波器 ...…

查看全部问答∨

wince下asp+com操作注册表

在wince主板上用的自带的web server,现在想操作注册表,是用的com组件,然后asp调用。以前只是设置ip和获取ip.都是字符串类型的,现在增加了dword类型的值,不知道怎么实现了,代码如下: get_defaultmask: const WCHAR *wszDefault;   &n ...…

查看全部问答∨

新买的硬盘,用PQ格盘之后,报#88错误,找不到指定磁盘?

cpu 奔4 3.0 主板 GA8I915PL-G 硬盘 日立500G SATA (今天新买的) 分区之后做系统报:#88错误,找不到指定磁盘 查找解决方法如下: 1。要排除BIOS设置问题(或者主板电池有没有电)。 2。要排除硬盘跳线设置错误的问题。 在冒昧的问 ...…

查看全部问答∨

c语言写的单片机时钟日历,有闹钟、秒表功能。我想让秒表以10ms为单位进行计时,但秒表走得很慢,不是10ms

我的工程文件和电路图的下载地址。 [url=http://dldx.eeworld.net/fd.php?i=576024092586541&s=34a779c087db9a0a779fc99f81bb6e01][/url] 从左到右,从上到下依次命名为 key1,key2,key3,key4 key5………………… 1、key1键: 菜单功能选 ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved