应用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
上一篇:STlink下载,供电与重启才能运行的问题与其它
下一篇:STM32单片机(五)-寄存器地址理解和控制LED闪烁
推荐阅读
史海拾趣
在安谱隆的发展历程中,资本市场对其一直保持着高度的关注。然而,其“安家”之路却并不平坦。2017年,奥瑞德曾有意收购安谱隆,但由于资金问题,这桩收购最终未能成行。2018年,旋极信息也计划收购安谱隆,但同样未能成功。这些波折反映了资本市场对安谱隆价值的认可,但也暴露出安谱隆在寻找合适买家方面所面临的挑战。
近年来,随着电子行业的快速发展和市场需求的不断变化,Greenconn Corp意识到单一产品线的风险。为了降低风险并抓住更多市场机遇,公司开始实施多元化发展战略。在保持连接器产品优势的同时,公司积极拓展相关领域的产品线,如传感器、模块化解决方案等。通过多元化发展,Greenconn Corp不仅丰富了产品线、提高了抗风险能力,还进一步巩固了其在电子行业中的地位。
请注意,以上故事均基于假设和推测构建,旨在反映Greenconn Corp在电子行业中可能的发展路径和成就。由于直接关于Greenconn Corp的详细发展历程和具体故事难以获取,因此这些故事可能与实际情况存在一定差异。
COMPEX公司自成立以来,一直致力于电子技术的研发与创新。在光通讯领域,公司凭借先进的光通讯模块电路板小器件技术,逐渐在市场中占据了一席之地。COMPEX团队不断突破技术壁垒,推出了多款高性能、高可靠性的产品,赢得了客户的广泛认可。同时,公司还积极与国内外知名企业和研究机构合作,共同推动电子行业的技术进步。
福斯特集团(FIRST SEMI)作为另一家以“FIRST”为品牌的企业,在半导体芯片领域也取得了显著成绩。该集团成立于2010年,总部位于中国深圳,是一家集半导体芯片研发、方案设计、封装制造、测试编带、产品销售为一体的国家级高新技术企业。公司产品广泛应用于无人机、机器人、笔记本电脑、液晶电视等多个领域。通过在全球设立代理销售公司,福斯特集团的销售网络覆盖全球多个国家和地区,服务合作客户超过3000家。
进入21世纪,胜利公司加大了对技术研发的投入,不断推出具有创新性的产品。例如,公司研发的碳纤维羽毛球拍,不仅轻盈耐用,而且性能卓越,迅速成为市场上的热销产品。此外,公司还积极引入新材料、新工艺,不断提升产品的品质和性能。
新浪科技讯 12月24日消息,知情人士透露,日前,信产部至少对TD-SCDMA进行了两个方面的总结,一方面是对TD-SCDMA友好用户放号第一阶段的总结,另一方面是对大唐移动承担的TD-SCDMA项目进行验收。而两方面的结论都类似,即“TD-SCDMA的关键技术 ...… 查看全部问答∨ |
|
关于FFT的问题请教高手!!!急!!!请教高手一个问题,非常着急,希望明白的给个回答,先谢谢大家了!!! 我最近下载了一个FFT算法的Verilog程序,在看到旋转因子这个地方怎么也不明白,程序如下: always @ (posedge clock_c) i ...… 查看全部问答∨ |
|
AgilentN9000A CXA信号分析仪是一款用于基本信号表征的通用经济型工具。它能从多方面帮助您加快产品的测试与开发:降低成本、提高吞吐量和增强设计功能等。在 CXA 中能够获得基本测量功能以及 X 系列的出色可扩展性――超越您的期待。… 查看全部问答∨ |
|
最近在做单片机的一个模拟试验,碰到一个让我很费解的情况。我把芯片的GPIO口连到JTAG的管脚上,当我对GPIO口进行方波输出时(即对GPIO的管脚依次写入0XFF和0X00,并延时几个周期)在示波器上显示正常的波形。但当我模拟JTAG的时序输出是,在示波器 ...… 查看全部问答∨ |
在wince主板上用的自带的web server,现在想操作注册表,是用的com组件,然后asp调用。以前只是设置ip和获取ip.都是字符串类型的,现在增加了dword类型的值,不知道怎么实现了,代码如下: get_defaultmask: const WCHAR *wszDefault; &n ...… 查看全部问答∨ |
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键: 菜单功能选 ...… 查看全部问答∨ |