专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
STM32
【超核】飞思卡尔Kinetis K系列 固件库 源码-历程-中文手册-视频教程
2019-07-21 04:30
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
STM32/STM8
4600
38
942
超核K60 V2.4固件库发布 源码+中文手册+入门视频
推广一下我们 飞思卡尔家的 Cortex-M4 Kinetis 系列芯片的资料! 我一直在做这方面的工作!
我相信这是库是目前网上 最全最好用的固件库及底层驱动,希望我们一起把它发扬光大,
超核K60固件库 为飞思卡尔Kinetis系列的开发者提供了丰富的底层驱动函数,
接口形式类似STM32固件库,有些设计比STM32固件库更加人性化,比如内置的PinMux向导功能 等等
。由于KinetisK系列的向下兼容性,所以固件库 只需更改启动文件就可以适用于K10
同时,驱动库代码全部开源,提供
35个例程,包括PWM,ADC OV7620
等等。还提供
Keil IAR CW的固件库模板程序。
自从2012年发布该固件库第一个版本后,受到广大智能车车友和公司工程师的支持!
如果遇到使用难题或者BUG 欢迎您及时沟通联系我们,大家的反馈、鼓励和支持是固件库发展的最好动力!
联系方式: email:yandld@126.com
欢迎大家加入QQ群讨论:247160311
首先要说明的是: 次本版和之前版本 区别很大!全面的改进升级!
特点一: 资料完善丰富
1. 配有完善中文库函数使用手册
2. Coding Style(代码风格): 类似STM32固件库 但是有所改进 配合 Keil CW IAR 模板程序
3.个例程应用例程 涵盖 固件库几乎所有函数使用
4.Keil IAR CW下的工程模板 以及大量使用资料
5.详情请见最后下载列表
特点二: 包含的模块增加。具体包含:
1 模拟: ADC DAC
2 FTM 灵活定时器(产生PWM,定时中断,或者脉冲捕获 及 正交解码)
3 TSI 触摸感应按键
4 通讯接口模块 UART SPI I2C UART CAN SD(最后的封装形式类似STM32固件库)
5 PIT 周期性定时器 最简单的定时器 用于产生周期性中断
6 RTC 实时时钟
7 DMA 最好用的DMA构件 支持所有通讯外设
8 SD SDIO构件 目前只支持SD卡
9 WDOG看门狗
10 GPIO 这么没有还怎么玩!。。。封装形式类似STM32
11 LPTM:可产生定时中断 在智能车比赛里通常用作 编码器计数
12 FLASH 内部FLASH操作函数
13 SYS(倍频 NVIC配置 等)
14 DELAY(使用M4内核SysTick做成的精准延时模块,从此不必for延时~)1 模拟: ADC DAC
特点三 规范了所有外设的模块接口,命名方式和初始化方式类似STM32固件库
1. 比如想让一个GPIO输出高低电平:
GPIO_InitTypeDef GPIO_InitStruct1; //先定义一个GPIO初始化结构体
GPIO_InitStruct1.GPIO_Pin = GPIO_Pin_15;
GPIO_InitStruct1.GPIO_InitState = Bit_RESET; //设为输出是 输出低电平
GPIO_InitStruct1.GPIO_IRQMode = GPIO_IT_DISABLE; //禁止引脚外部中断
GPIO_InitStruct1.GPIO_Mode = GPIO_Mode_OPP; //推挽输出
GPIO_InitStruct1.GPIOx = PTA;
GPIO_Init(&GPIO_InitStruct1); //最后传入初始化结构地址 完成初始化
复制代码
这样PTA15就输出低电平了,其他模块都是类似的方法,先定义XXXX_InitTypeDef 然后赋参数,然后XXXX_Init(&XXXX_InitTypeStruct1); 调用
怎么样,是不是和STM32固件库神似呀 哈哈! 玩过STM32的上手没难度。
2 再比如 想让一个串口初始化,就更简单了:
UART_DebugInitStruct1.UART_BaudRate = 115200; //定义波特率
UART_DebugInitStruct1.UARTxMAP = UART4_RX_E24_TX_E25; // 使用UART4 RxE24 引脚 Tx E25引脚
UART_Init(&UART_DebugInitStruct1); //所有模块都是这样 XXXX_Init(&XXX_InitStruct1);
复制代码
其中 UART4_RX_E24_TX_E25 是预先定义好的宏,在 uart.h 里 如下,只要选择其中一个就行了,省去了PinMux配置
#define UART0_RX_PA1_TX_PA2 (0x00004410U)
#define UART0_RX_PA14_TX_PA15 (0x00039E18U)
#define UART0_RX_PB16_TX_PB17 (0x00042258U)
#define UART0_RX_PD6_TX_PD7 (0x00018ED8U)
#define UART1_RX_PE0_TX_PE1 (0x00000319U)
#define UART1_RX_C3_TX_C4 (0x0000C899U)
#define UART2_RX_D2_TX_D3 (0x000086DAU)
#define UART3_RX_B10_TX_B11 (0x0002965BU)
#define UART3_RX_C16_TX_C17 (0x0004229BU)
#define UART3_RX_E4_TX_E5 (0x00010B1BU)
#define UART4_RX_E24_TX_E25 (0x0006331CU)
#define UART4_RX_C14_TX_C15 (0x00039E9CU)
复制代码
还有,固件库中弱化了 系统时钟的表现,不必考虑系统有多少时钟,每个外设都是由什么时钟驱动的。多少分频 。这些都不需要管,固件库已经帮你做好了。比如你使用SYS构件的SystemClockUpdate 修改主频。然后再调用一次串口初始化、串口波特率只要输入的还是115200. 那最后肯定还是115200的波特率。时钟在构件中已经被重新计算过了。
3 再说一个困扰做智能车小朋友很久的问题,倍频问题:
使用固件库,只需要调用
SystemClockSetup(ClockSource_IRC,CoreClock_96M);//使用内部RC时钟,倍频到96M
复制代码
这样,就完成了PLL倍频,其中ClockSource_IRC 和 CoreClock_96M 都是可以选择的宏他们在sys.h中,具体见参考手册。比如CoreClock就有以下选择
#define CoreClock_200M
#define CoreClock_100M
#define CoreClock_96M
#define CoreClock_72M
#define CoreClock_64M
#define CoreClock_48M
复制代码
4调智能车的重头戏:PWM产生
PWM可以去驱动电机和 舵机无论在智能车的哪个组,PWM波产生都是必不可少的。
FTM_InitStruct1.Frequency = 1000; // 设定频率1KHZ
FTM_InitStruct1.FTMxMAP = FTM0_CH0_PC1; //使用FTM0 CH0 模块, 引脚是PC1
FTM_InitStruct1.FTM_Mode = FTM_Mode_EdgeAligned; //边沿对齐模式,大家做这多半用这个模式
FTM_InitStruct1.InitalDuty = 4000; //占空比为40%
FTM_Init(&FTM_InitStruct1);
复制代码
其中 引脚和通道的选择也是宏定义,大家选择就行了:
#define FTM0_CH0_PC1 (0x00108100U)
#define FTM0_CH0_PA3 (0x000c0300U) //与JTAG冲突,慎用
#define FTM0_CH1_PC2 (0x00108210U)
#define FTM0_CH1_PA4 (0x000c0410U)
#define FTM0_CH2_PC3 (0x00108320U)
#define FTM0_CH2_PA5 (0x000c0520U) //与JTAG冲突,慎用
#define FTM0_CH3_PC4 (0x00108430U)
#define FTM0_CH4_PD4 (0x0010c440U)
#define FTM0_CH5_PD5 (0x0010c550U)
#define FTM0_CH5_PA0 (0x000c0050U) //与JTAG冲突,慎用
#define FTM0_CH6_PD6 (0x0010c660U)
#define FTM0_CH6_PA1 (0x000c0160U) //与JTAG冲突,慎用
#define FTM0_CH7_PD7 (0x0010c770U)
#define FTM0_CH7_PA2 (0x000c0270U) //与JTAG冲突,慎用
#define FTM1_CH0_PA12 (0x000c0c01U)
#define FTM1_CH0_PB0 (0x000c4001U)
#define FTM1_CH1_PA13 (0x000c0d11U)
#define FTM1_CH1_PB1 (0x000c4111U)
#define FTM2_CH0_PB18 (0x000c5202U)
#define FTM2_CH1_PB19 (0x000c5312U)
复制代码
想要改变占空比,只需要调用
FTM_PWM_ChangeDuty(FTM0_CH0_PC1,6000);//占空比60%
复制代码
这样,占空比就从初始化的40% 上升到60% 了
4 再来一个easy的问题,延时: 延时是任何程序都用到的模块,你还在用for延时吗? 太out拉! 只要调用下初始化:
//初始化延时模块
DelayInit();
复制代码
然后就可以用SysTick 实现精准延时拉:
DelayMs(300); //延时300MS
DelayUs(500); //延时500US
复制代码
特点三 跨IDE支持。Keil,IAR和CW之前互相移植没难度。 我已经做好了3个IDE下的模板
资料下载列表 <
部分附件回帖可见>
支持下我们吧~~
0. {MOD}打包下载地址:
http://pan.baidu.com/share/home?uk=2870907047
超核固件库V2.4 中文使用手册
Keil 2.4固件库工程模板
IAR下 2.4固件库工程模板
CW10.3下 2.4固件库工程模板(CW目录不要有中文字符)
超核固件库V2.4 示例程序(一共34个) 下载地址:
6.视频教程:
入门视频教程1 (如无法观看请点击我)
入门视频教程2 (如无法观看请点击我)
入门视频教程3 (如无法观看请点击我)
入门视频教程4 (如无法观看请点击我)
入门视频教程5 (如无法观看请点击我)
入门视频教程6 (如无法观看请点击我)
入
门视频教程7 (如无法观看请点击我)
入
门视频教程8 (如无法观看请点击我)
固件库会不定期更新,建议大家收藏附件中的 {MOD}地址,有事没事就来Check update 吧·~
7 部分截图欣赏
<部分附件回帖可见>
7 部分截图欣赏
<部分附件回帖可见>
V2.4配套的 评估硬件---原子核 核心板-可作为智能车核心板之用
V2.4固件库中文使用手册
V2.4固件库 例程截图
在Keil下使用 V2.4版本固件库
在IAR下使用 V2.4版本固件库
在CW下使用 V2.4版本固件库
3 天前
上传
下载附件
(22.04 KB)
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
38条回答
正点原子
1楼-- · 2019-07-21 10:04
谢谢分享,资料不错。
加载中...
正点原子
2楼-- · 2019-07-21 10:53
就是版面比较难看。
加载中...
yandld
3楼-- · 2019-07-21 12:44
精彩回答 2 元偷偷看……
加载中...
月光疾風
4楼-- · 2019-07-21 15:44
顶起~
加载中...
qq942266575
5楼-- · 2019-07-21 19:25
的确不错。。
加载中...
yandld
6楼-- · 2019-07-21 20:01
自己顶下 哈哈
加载中...
1
2
3
4
5
6
7
下一页
一周热门
更多
>
相关问题
STM32F4上I2C(在PROTEUS中模拟)调试不通的问题
6 个回答
芯片供应紧张,准备换个MCU,MM32L系列替换STM32L系列的怎么样?
7 个回答
STM32同时使用两个串口进行数据收发时数据丢包的问题
5 个回答
STM32F103串口通信死机问题
4 个回答
STM32WLE5CC连接SX1268在LoRa模式下能与 SX1278互通吗?
2 个回答
STM32开发板免费用活动
7 个回答
stm32 处理 DHT11占用太多时间,大家程序是怎么设计的
8 个回答
分享一个STM32单片机做的离线编程器代码
9 个回答
相关文章
ST公司第一款无线低功耗单片机模块有效提高物联网设计生产效率
0个评论
如何实现对单片机寄存器的访问
0个评论
通过USB用STM32片内自带Bootloader下载程序及注意事项
0个评论
欲练此功必先自宫之STM32汇编启动,放慢是为了更好的前行
0个评论
×
关闭
采纳回答
向帮助了您的网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
STM32
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
关闭
您已邀请
15
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
一周热门 更多>