历史上的今天
返回首页

历史上的今天

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

正在发生

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

2019-08-23 来源:eefocus

应用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


推荐阅读

史海拾趣

ADL [ADL Embedded Solutions Inc]公司的发展小趣事

ADL Embedded Solutions Inc. 是一家专注于嵌入式计算解决方案的公司,以下是该公司发展的五个相关故事:

  1. 公司创立与早期发展: ADL Embedded Solutions Inc. 成立于1994年,总部位于美国科罗拉多州科罗拉多斯普林斯市。公司初期致力于为工业、军事、航空航天等领域提供嵌入式计算解决方案。其产品包括工业级嵌入式计算板卡、系统、模块等。

  2. 技术创新与产品推出: ADL 在嵌入式计算领域不断进行技术创新,并推出了多款具有竞争力的产品。公司的产品具有高性能、低功耗、高可靠性等特点,得到了客户的广泛认可。其产品广泛应用于军事航空、医疗、交通、工业自动化等领域。

  3. 客户合作与项目案例: ADL 与各行业的领先企业建立了长期稳定的合作关系,并参与了众多重要项目。例如,公司为航空航天领域的客户提供了符合严格标准的嵌入式计算解决方案,为医疗设备制造商提供了可靠的嵌入式计算板卡等。

  4. 全球市场拓展与国际化发展: ADL 通过不断拓展国内外市场,实现了全球化发展。公司在美国、欧洲和亚洲等地设有销售办事处和服务中心,为客户提供本地化的技术支持和服务。同时,ADL 的产品远销全球各地,深受国际客户的青睐。

  5. 未来展望与持续发展: ADL 将继续致力于技术创新和产品开发,满足客户不断变化的需求。公司将不断扩大在工业、军事、医疗等领域的市场份额,加强与客户的合作,保持行业领先地位,实现业务的持续增长和发展。

高博(GBG)公司的发展小趣事

在巩固功率MOSFET市场地位的同时,谷峰公司还积极拓展其他应用领域。公司的半导体产品广泛应用于PD快充、机器人、电动工具、LED照明、5G基站、充电桩等多个领域,满足了不同客户的多样化需求。此外,谷峰还紧跟行业发展趋势,不断推出新产品和技术解决方案,以应对市场的快速变化。这种多元化的发展策略不仅为公司带来了新的增长点,还增强了其抵御市场风险的能力。

AXSEM公司的发展小趣事

谷峰电子有限公司的故事始于1995年,当时公司在香港成立,标志着其半导体元器件研发与销售的起点。初期,面对激烈的市场竞争和技术挑战,谷峰团队凭借对半导体技术的深刻理解和对市场需求的敏锐洞察,逐步确立了以功率MOSFET为核心产品的战略方向。2000年,谷峰在深圳设立分公司,进一步扩大了其研发和销售网络,为公司的快速发展奠定了坚实基础。

Facon公司的发展小趣事

随着技术实力的不断提升,Facon开始积极拓展市场。他们与全球知名的电子产品制造商建立了紧密的合作关系,将高性能芯片广泛应用于智能手机、平板电脑、笔记本电脑等领域。同时,Facon还积极开拓新兴市场,如物联网、智能家居等领域,为这些领域提供定制化的解决方案。通过不断的市场拓展和技术创新,Facon逐渐在全球电子行业中占据了举足轻重的地位。

Eastman Kodak Company公司的发展小趣事

经过破产保护和重组的洗礼后,伊士曼柯达公司更加注重创新和可持续发展。公司加强了与新兴科技公司的合作,积极探索新的业务模式和市场机会。同时,柯达还致力于研发更加环保、高效的影像产品和技术,以满足客户对高品质影像的需求。未来,伊士曼柯达公司将继续秉承创新、品质、服务的理念,不断推动影像行业的发展和进步。

Conexcon Group公司的发展小趣事

随着全球化进程的加速,Conexcon Group积极实施国际化战略,将业务拓展至海外市场。公司通过在海外设立研发中心和生产基地,进一步提升了自身的研发能力和生产效率。同时,公司还加强了与国际知名品牌的合作,通过共同推广和营销活动,提升了自身品牌在国际市场的知名度和影响力。这些举措不仅为公司带来了丰厚的利润回报,也为公司的长远发展奠定了坚实的基础。

问答坊 | AI 解惑

嵌入式

嵌入式系统的好资料…

查看全部问答>

三角波参数测试仪——09年四川

本帖最后由 paulhyde 于 2014-9-15 04:14 编辑 [local]2[/local]“TI”杯时我们三人的作品。 三角波参数测试仪。  …

查看全部问答>

【藏书阁】电路分析 (面向21世纪课程教材)

目录: 第一章 线性电路的复数解法 1.1 电源与元件的概念 1.2 常参量线性电路的复数解法 1.3 一阶RC滤波器 1.4 二级LC滤波器 思考题 习题 第二章 线性电路的s域解法 2.1 拉普拉斯变换 2.2 线性电路的s域解法 2.3 卷积 附录2 拉氏变换 ...…

查看全部问答>

关于可视对讲,一直疑惑的问题

做了这么多年的门禁和可视对讲,做过了好多的产品,现在市场上的产品真的是五花八门, 国内到底谁家, 才是工程商的不二选择......…

查看全部问答>

cycloneIII_3c25的原装开发板到手了-发资料

整快板子上的外设不是很多,但是存储器资源丰富。并预留了一个HSMC接口,可以用来扩展。有三张光盘,一张是介绍开发板的使用,例程,入门指导,另两张是Quartus2的软件,常用库,NIOS2开发资料。先简单介绍到这里,把开发板的资料传上来共享(全部 ...…

查看全部问答>

DSP2407在转速测定中的应用

DSP2407在转速测定中的应用…

查看全部问答>

空调板上的数码灯的问题

显示温度的时候,数码灯上未点亮的部分有闪烁现象,什么原因…

查看全部问答>

LAunchPad的2线控制LCD12864

很给力哦,解决LaunchPad的 IO口不够用,很有价值~~~   我用的开发板是g2553~~~ [ 本帖最后由 574937246 于 2012-7-20 14:46 编辑 ]…

查看全部问答>

滤波器与调谐

原理图如下,现在我更改信号源的频率,发现在6Mhz时,电阻上的电压波形最完整,是不是可以认为,电感电容在6MHZ达到了谐振?…

查看全部问答>

问锁定放大电路中的一个问题

请教坛中大侠:  锁定放大中的移相电路部分,其移相作用是调整好就可以了,还是要以后经常性的调整?换句话说:移相部分的可调电阻最后能不能换成固定的?…

查看全部问答>