打印
[Kinetis]

MK02FN64VFM10用keil5编程问题

[复制链接]
2376|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
目前本人刚从别的转过来,属于小白类型,对飞思卡尔MK02FN64VFM10这款单片机不熟悉,尤其是用keil5编写的代码没有找到相关的例子。目前本人需要用到ADC,SPI,UART,CRC集FLASH编写代码。有用过的能给个代码参考一下么,或者相关的资料也行,谢谢。

相关帖子

沙发
zhanzr21| | 2015-11-30 23:45 | 只看该作者
你用哪个版本的Keil 5
如果是最新版本的 可以在这个介面 添加K00系列的 例子 支持包

dfp.png (289.22 KB )

dfp.png

使用特权

评论回复
板凳
FSL_TICS_ZJJ| | 2015-12-1 09:33 | 只看该作者
MK02FN64VFM10这个芯片目前没有直接对应的例程,不过你可以参考K22的KSDK代码,里面有MDK工程。
下载KSDK1.3.0:www.freescale.com/ksdk
下载安装后,工程在路径:C:\Freescale\KSDK_1.3.0\examples\frdmk22f
具体还请参考C:\Freescale\KSDK_1.3.0\doc中Getting Started with Kinetis SDK (KSDK) v.1.3.pdf

使用特权

评论回复
地板
laoxianccc|  楼主 | 2015-12-1 10:19 | 只看该作者
FSL_TICS_ZJJ 发表于 2015-12-1 09:33
MK02FN64VFM10这个芯片目前没有直接对应的例程,不过你可以参考K22的KSDK代码,里面有MDK工程。
下载KSDK1. ...

你好,你给的链接进去了,有四个选择,看了一下感觉都不是MK22系列的啊

使用特权

评论回复
5
laoxianccc|  楼主 | 2015-12-1 10:22 | 只看该作者
zhanzr21 发表于 2015-11-30 23:45
你用哪个版本的Keil 5
如果是最新版本的 可以在这个介面 添加K00系列的 例子 支持包
...

keil5.11的版本,那个已经添加了,现在GPIO点亮小灯没问题,目前在做ADC遇到了不会进行转换完成标志置位。不知道是配置问题还是什么,配置代码如下:
        SIM_SOPT7 |=0x00000080;//½»Ìæת»»£¬AͨµÀ
        //PORTB_PCR1 =0;//¶Ë¿ÚÅäÖÃADC²ÉÑù
        SIM_SCGC6 |=0x08000000;//ADCʱÖÓʹÄÜ
        SIM_SCGC4 |=0x00100000;//µçѹ»ù×¼VREFʹÄÜ
        ADC0_CFG1 |=0x0000000C;//16λADC£¬µ¥¶Ë²ÉÑù
        ADC0_CFG2 |=0x00000004;//¸ßËÙģʽ
        ADC0_SC1A  |=0x00000009;//ADC9ÊäÈë
        ADC0_SC2 |=0x00000040;//Ó²¼þ´¥·¢£¬²»Ð£×¼£¬²»Ê¹ÓÃDMA£¬²Î¿¼µçѹÍⲿ»ù×¼
        ADC0_SC3 |=0x0000000E;//Á¬Ðø²ÉÑùת»»£¬Ó²¼þ´¥·¢Ê¹ÄÜ£¬16´Î²ÉÑùÑù±¾Æ½¾ù
        GPIOB_PDDR &=0xFFFFFFFD;//b1¿ÚÊäÈë¿Ú

使用特权

评论回复
6
FSL_TICS_ZJJ| | 2015-12-1 10:41 | 只看该作者
laoxianccc 发表于 2015-12-1 10:19
你好,你给的链接进去了,有四个选择,看了一下感觉都不是MK22系列的啊

下载这个,KSDK v1.3.0 Mainline releases
里面有很多系列,不是只有一个K22的。

使用特权

评论回复
7
laoxianccc|  楼主 | 2015-12-3 10:22 | 只看该作者
FSL_TICS_ZJJ 发表于 2015-12-1 10:41
下载这个,KSDK v1.3.0 Mainline releases
里面有很多系列,不是只有一个K22的。

0 PDB trigger selected for ADC0.
1 Alternate trigger selected for ADC0.

选择1表示什么触发机制啊,还有就是PDB触发时候怎么不ADC转化

使用特权

评论回复
8
laoxianccc|  楼主 | 2015-12-3 15:26 | 只看该作者
FSL_TICS_ZJJ 发表于 2015-12-1 10:41
下载这个,KSDK v1.3.0 Mainline releases
里面有很多系列,不是只有一个K22的。


自己写寄存器操作的:
代码如下:
#include "MK02F12810.h"
#include "system_MK02F12810.h"
#include "adc.h"
#include "uart.h"

uint32_t flag=0;
uint32_t ADCshuchu=0;
//#define CLOCK_SETUP  1

int main(void)
{
        SystemCoreClockUpdate ();
        
        SIM_SCGC6 |=SIM_SCGC6_PIT_MASK //PIT晶振使能
                  |SIM_SCGC6_ADC0_MASK //ADC晶振使能
                  |SIM_SCGC6_PDB_MASK; //PDB晶振使能
        SIM_SOPT7 |=SIM_SOPT7_ADC0TRGSEL(4);//ADC 用PDB触发
        SIM_SCGC4 |=SIM_SCGC4_VREF_MASK;//外部基准电压
        SIM_SCGC5 |=SIM_SCGC5_PORTB_MASK;//B口晶振使能
        
        PORTB_PCR(1)|=PORT_PCR_MUX(0); //ADC0_SEL9
               
        ADC0_CFG1 |=ADC_CFG1_ADIV(2)//4分频
                   |ADC_CFG1_MODE(3);//0x0000004c//16位ADC
        ADC0_CFG2 |=0x00000000;//
        ADC0_SC1A=0x00;
        ADC0_SC1A  //|=ADC_SC1_AIEN_MASK  //ADC中断使能
                    |=ADC_SC1_ADCH(9);//ADC引脚
        ADC0_SC2 |=ADC_SC2_ADTRG_MASK;//硬件触发
        ADC0_SC3 |=ADC_SC3_ADCO_MASK  //连续转化
                  |ADC_SC3_AVGE_MASK  
                  |ADC_SC3_AVGS(3);
        
                PDB0_SC |=PDB_SC_CONT_MASK  //PDB连续转换
                              |PDB_SC_PDBEN_MASK  //使能PDB
                             //|PDB_SC_PDBIE_MASK  //允许中断
                                |PDB_SC_PRESCALER(0X5) //预分频
                                |PDB_SC_TRGSEL(0Xf) //软件触发
                                |PDB_SC_MULT(0X2); //分频因子20
        PDB0_IDLY =0X0000; //计数器
        PDB0_MOD =0X6789; //PDB周期
        PDB0_CH0C1 |=PDB_C1_EN(0X01)
                     |PDB_C1_TOS(0X01)
                     |PDB_C1_EN(0X02) //
                     |PDB_C1_TOS(0X02); //
        PDB0_CH0DLY0 = 0x1234;
        PDB0_CH0DLY1 = 0x4567; //

  PDB0_SC =  PDB_SC_CONT_MASK        // Contintuous, rather than one-shot, mode
            | PDB_SC_PDBEN_MASK       // PDB enabled
            //| PDB_SC_PDBIE_MASK       // PDB Interrupt Enable
            | PDB_SC_PRESCALER(0x5)   // Slow down the period of the PDB for testing
            | PDB_SC_TRGSEL(0xf)      // Trigger source is Software Trigger to be invoked in this file
            | PDB_SC_MULT(2)          // Multiplication factor 20 for the prescale divider for the counter clock
            | PDB_SC_LDOK_MASK;

                                                
        PIT_MCR=0x00;
        PIT_LDVAL0 =0x0003E2FF;
        PIT_TCTRL0 =PIT_TCTRL_TIE_MASK
                   |PIT_TCTRL_TEN_MASK;
                                                 //|PIT_TCTRL_CHN_MASK;
                                                 //enable_irq(57);
                                                 //IRQn(39);
        while(1)
                {
                        if(ADC0_SC1A&0x00000080)
                        {
                          ADCshuchu=ADC0_RA;
                                flag=0;
                        }
                }
}

这样用中断和不用中断都不行,软硬件触发都试过了也不行,仿真看寄存器显示没有进行ADC转化,估计是触发机制没工作。不知道什么原因,希望帮忙解决一下,谢谢!
调试器是pe-micro,开发环境为keil5.11

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

107

帖子

1

粉丝