• 滨海湾新区要变“湾区明珠” 2019-05-21
  • 孙杨、宁泽涛扛起中国游泳大旗 2019-05-11
  • 那你就写个帖子驳呀!告诉你,我是普通老百姓就是错了也没有啥,你可是论坛“真理化身”呀! 2019-05-11
  • 守住青山不放松 护好绿水不辞难——在渝全国人大代表聚焦“共抓大保护、不搞大开发”专题调研记略 2019-05-10
  • 巴厘岛被爆众多海域垃圾成灾 潜水常被塑料瓶塑料袋包围 2019-05-04
  • 两个不能否定,怎会是停留在30年前? 2019-04-27
  • 国际在线:向世界报道中国,向中国报道世界 2019-04-27
  • 【理上网来喜迎十九大】外媒记者:稳步推进生态文明建设的中国更加美丽 2019-04-26
  • 董卿海霞李思思康辉撒贝宁 央视名嘴童年照谁更萌 2019-04-26
  • “龙江二号”微卫星传回地月合影 2019-04-18
  • 中国驻泰国大使考察合艾国光中学孔子课堂 2019-04-18
  • 【清园20年】感恩大回馈!半价!半价! 2019-04-18
  • 中央纪委紧盯节点 4年来通报曝光问题近4000起 2019-04-13
  • 2013环球企业领袖宁夏圆桌会议嘉宾云集 2019-04-13
  • 《魔兽世界》未解之谜 那些仍不能被玩家们踏足的领地 2019-04-11
  • 打印

    广东11选5殺碼公式: [M0] TM10 CKO输出波形例程

    [复制链接]
    352|6
    跳转到指定楼层
    楼主
    看了官方的主要函数是:
    #define Simple_CKO_MainCounter     120
    #define Simple_CKO_Prescaler       100
    #define Simple_CKO_Source           1
    /**
    *******************************************************************************
    * @brief            Toggle TM10_CKO pin when TM10 counter overflow
    * @Details     1.initial & modify TimeBase parameter
    *    \n        2.clear TOF flag
    *    \n        3.Clock Out config (initial state='1' & enable clock out)
    *    \n        4.Start TM10
    * @NOTE        if user wants to 1ms period and CK_TM10_PR is 12MHz.
    *              The Total clocks is 12M*1ms = 12000.
    *              User can set "clock prescaler"=100 and "pulse width"=120 .               
    *******************************************************************************
    */
    void Sample_TM10_ClockOut(void)
    {  
        TM_TimeBaseInitTypeDef TM_TimeBase_InitStruct;   
        // 1.TimeBase structure initial
        TM_TimeBaseStruct_Init(&TM_TimeBase_InitStruct);  ///////?¨ê±ê±?ù3?ê??ˉ
        // modify parameter
        TM_TimeBase_InitStruct.TM_Period = Simple_CKO_MainCounter - 1;  ///?ü?ú3?ê??ˉ
        TM_TimeBase_InitStruct.TM_Prescaler = Simple_CKO_Prescaler - 1; ///·??μ?÷
        TM_TimeBase_InitStruct.TM_CounterMode = Cascade; /////??êy?£ê?  
        TM_TimeBase_Init(TM10, &TM_TimeBase_InitStruct);   ///ê±?ù3?ê??ˉ
        TM_ClearFlag(TM10, TMx_TOF); ///??3y?D??
        // 3.Clock Out config (initial state='1' & enable clock out)
        TM_ClockOutSource_Select(TM10, (TM_CKOSrcDef) Simple_CKO_Source); ///ê?3?μ?TM10
        TM_CKOOutputState_Init(TM10, SET);                /////ê?3?×′ì??aSET
        TM_ClockOut_Cmd(TM10, ENABLE);                   //////ê?3?ê1?ü
        // ----------------------------------------------------
        // 4.Start TM10
        TM_Timer_Cmd(TM10, ENABLE);         ////′ò?a?¨ê±?÷
        return;
    }
    再看手册的 对应输出口


    再贴上整个程序  编译后烧录 示波器没有测试没有波形输出。
    //***************************************************
    //*********êμ?é??μ?£oTM10ê?3?PWM2¨D?************
    #include "MG32x02z__Common_DRV.H"
    #include "MG32x02z_DRV.H"
    #include "MG32x02z_TM_DRV.h"

    void ChipInit(void);

    #define Simple_CKO_MainCounter     120
    #define Simple_CKO_Prescaler       100
    #define Simple_CKO_Source           1
    /**
    *******************************************************************************
    * @brief            Toggle TM10_CKO pin when TM10 counter overflow
    * @details     1.initial & modify TimeBase parameter
    *    \n        2.clear TOF flag
    *    \n        3.Clock Out config (initial state='1' & enable clock out)
    *    \n        4.Start TM10
    * @note        if user wants to 1ms period and CK_TM10_PR is 12MHz.
    *              The Total clocks is 12M*1ms = 12000.
    *              User can set "clock prescaler"=100 and "pulse width"=120 .               
    *******************************************************************************
    */
    void Sample_TM10_ClockOut(void)
    {  
        TM_TimeBaseInitTypeDef TM_TimeBase_InitStruct;   
        // 1.TimeBase structure initial
        TM_TimeBaseStruct_Init(&TM_TimeBase_InitStruct);  ///////?¨ê±ê±?ù3?ê??ˉ
        // modify parameter
        TM_TimeBase_InitStruct.TM_Period = Simple_CKO_MainCounter - 1;  ///?ü?ú3?ê??ˉ
        TM_TimeBase_InitStruct.TM_Prescaler = Simple_CKO_Prescaler - 1; ///·??μ?÷
        TM_TimeBase_InitStruct.TM_CounterMode = Cascade; /////??êy?£ê?  
        TM_TimeBase_Init(TM10, &TM_TimeBase_InitStruct);   ///ê±?ù3?ê??ˉ
        TM_ClearFlag(TM10, TMx_TOF); ///??3y?D??
        // 3.Clock Out config (initial state='1' & enable clock out)
        TM_ClockOutSource_Select(TM10, (TM_CKOSrcDef) Simple_CKO_Source); ///ê?3?μ?TM10
        TM_CKOOutputState_Init(TM10, SET);                /////ê?3?×′ì??aSET
        TM_ClockOut_Cmd(TM10, ENABLE);                   //////ê?3?ê1?ü
        // ----------------------------------------------------
        // 4.Start TM10
        TM_Timer_Cmd(TM10, ENABLE);         ////′ò?a?¨ê±?÷
        return;
    }

    int main()
    {
        ChipInit();
        Sample_TM10_ClockOut();
        while(1)
        {

        }
    }



    沙发
    | 2018-10-15 08:57 | 只看该作者
    GPIO口有使能输出吗?
    板凳
     楼主 | 2018-10-15 09:23 | 只看该作者
    GPIO已经使能了
    地板
    | 2018-10-15 09:43 | 只看该作者
    本帖最后由 noctor 于 2018-10-15 10:36 编辑

    你使能输出的功能复用是复用的什么功能,你直接点击回复我吧,不然我收不到提醒很容易看不到你回复,另外我自己测试了一下,是没问题的,我的猜测就是你使能GPIO的功能复用不对,GPIO的功能应该是TM10_ClockOut
    5
     楼主 | 2018-10-15 17:48 | 只看该作者
    noctor 发表于 2018-10-15 09:43
    你使能输出的功能复用是复用的什么功能,你直接点击回复我吧,不然我收不到提醒很容易看不到你回复,另外 ...

    //***************************************************
    //*********êμ?é??μ?£oTM10ê?3?PWM2¨D?************


    #include "MG32x02z__Common_DRV.H"
    #include "MG32x02z_DRV.H"
    #include "MG32x02z_TM_DRV.h"

    void ChipInit(void);

    #define Simple_CKO_MainCounter     120       
    #define Simple_CKO_Prescaler       100
    #define Simple_CKO_Source           1
    /**
    *******************************************************************************
    * @brief            Toggle TM10_CKO pin when TM10 counter overflow
    * @details     1.initial & modify TimeBase parameter
    *    \n        2.clear TOF flag
    *    \n        3.Clock Out config (initial state='1' & enable clock out)
    *    \n        4.Start TM10
    * @note        if user wants to 1ms period and CK_TM10_PR is 12MHz.
    *              The Total clocks is 12M*1ms = 12000.
    *              User can set "clock prescaler"=100 and "pulse width"=120 .               
    *******************************************************************************
    */

    void CSC_Init ()
    {
                  CSC_PLL_TyprDef CSC_PLL_CFG;                       
                                    UnProtectModuleReg(MEMprotect);             // Setting flash wait state
                                    MEM_SetFlashWaitState(MEM_FWAIT_ONE);        // 50MHz> Sysclk >=25MHz
                                    ProtectModuleReg(MEMprotect);
                                    UnProtectModuleReg(CSCprotect);
                                    CSC_CK_APB_Divider_Select(APB_DIV_1);        // Modify CK_APB divider        APB=CK_MAIN/1
                                    CSC_CK_AHB_Divider_Select(AHB_DIV_1);        // Modify CK_AHB divider        AHB=APB/1
                                    CSC_IHRCO_Select(IHRCO_12MHz);                        // IHRCO Sel 12MHz
                                    CSC_IHRCO_Cmd(ENABLE);
                                    while(CSC_GetSingleFlagStatus(CSC_IHRCOF) == DRV_Normal);
                                    CSC_ClearFlag(CSC_IHRCOF);
                                    CSC_CK_HS_Select(HS_CK_IHRCO);                        // CK_HS select IHRCO
                                    CSC_PLL_CFG.InputDivider=PLLI_DIV_2;        // 12M/2=6M
                                    CSC_PLL_CFG.Multiplication=PLLIx16;                // 6M*16=96M
                                    CSC_PLL_CFG.OutputDivider=PLLO_DIV_2;        // PLLO=96M/2=48M
                                    CSC_PLL_Config(&CSC_PLL_CFG);
                                    CSC_PLL_Cmd(ENABLE);
                                    while(CSC_GetSingleFlagStatus(CSC_PLLF) == DRV_Normal);
                                    CSC_ClearFlag(CSC_PLLF);
                                    CSC_CK_MAIN_Select(MAIN_CK_HS);       
                                    /* Configure peripheral clock */
                                    CSC_PeriphOnModeClock_Config(CSC_ON_PortA,ENABLE);                                          // Enable Port A clock
                                    CSC_PeriphOnModeClock_Config(CSC_ON_PortB,ENABLE);                                          // Enable Port B clock
                                    CSC_PeriphOnModeClock_Config(CSC_ON_PortC,ENABLE);                                          // Enable Port C clock
                                    CSC_PeriphOnModeClock_Config(CSC_ON_PortE,ENABLE);                                          // Enable Port D clock
                                    CSC_PeriphProcessClockSource_Config(CSC_TM10_CKS, CK_APB);

                                    ProtectModuleReg(CSCprotect);   
    }


    void Sample_TM10_ClockOut(void)
    {  
        TM_TimeBaseInitTypeDef TM_TimeBase_InitStruct;   
        TM_TimeBaseStruct_Init(&TM_TimeBase_InitStruct);  ///////?¨ê±ê±?ù3?ê??ˉ
        TM_TimeBase_InitStruct.TM_Period = Simple_CKO_MainCounter - 1;  ///?ü?ú3?ê??ˉ
        TM_TimeBase_InitStruct.TM_Prescaler = Simple_CKO_Prescaler - 1; ///·??μ?÷
        TM_TimeBase_InitStruct.TM_CounterMode = Cascade; /////??êy?£ê?  
        TM_TimeBase_Init(TM10, &TM_TimeBase_InitStruct);   ///ê±?ù3?ê??ˉ
        TM_ClearFlag(TM10, TMx_TOF);                       ///??3y?D??
        TM_ClockOutSource_Select(TM10, (TM_CKOSrcDef) Simple_CKO_Source); ///ê?3?μ?TM10
        TM_CKOOutputState_Init(TM10, SET);                /////ê?3?×′ì??aSET
        TM_ClockOut_Cmd(TM10, ENABLE);                   //////ê?3?ê1?ü
        TM_Timer_Cmd(TM10, ENABLE);                        ////′ò?a?¨ê±?÷
       
    }
    //********************************************************************************************
    void GPIOInit(void)
    {
                                    uint16_t  ReadData;
                                    PIN_InitTypeDef PINX_InitStruct;   
                                    PINX_InitStruct.PINX_Mode                                  = PINX_Mode_OpenDrain_O;            //????í?íìê?3?                                                                                                                                                                                                                                                                                                                                //     1.QB: Quasi-Bidirection mode only for PC )
                                    PINX_InitStruct.PINX_PUResistant        = PINX_PUResistant_Enable;          //?ú2?é?à-
                                    PINX_InitStruct.PINX_Speed              = PINX_Speed_Low;                   //éè???ù?è                                                                                                                                                                                                                                                                                       
                                    PINX_InitStruct.PINX_OUTDrive           = PINX_OUTDrive_Level0;             //ê?3??üá|éè??                                                                                                                                                                                                                                                                                                       
                                    PINX_InitStruct.PINX_FilterDivider      = PINX_FilterDivider_Bypass;        //????ê?è?μ???2¨·??μ?÷
                                    PINX_InitStruct.PINX_Inverse            = PINX_Inverse_Disable;             //ê?è?D?o?ê?·?·′×a
                                    PINX_InitStruct.PINX_Alternate_Function = 5;                                //????TM10CKO?£ê?
                                    GPIO_PinMode_Config(PINB(1),&PINX_InitStruct);                              //PB1????

    }
    //********************************************************************************************
    int main()
    {
        CSC_Init();
              GPIOInit();
                    Sample_TM10_ClockOut();  
        while(1)
        {
                 
        }
    }


    还是不行
    6
    | 2018-10-16 08:46 | 只看该作者
       PINX_InitStruct.PINX_Alternate_Function = 5; //这儿你要改成4,alternate function是从0开始算的,5是TIM16_TRGO,4才是TIM10 CKO。
    7
     楼主 | 2018-10-16 09:39 | 只看该作者
    已经弄好了,原来如此。感谢 。。
    扫描二维码,随时随地手机跟帖
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    我要发帖 投诉建议 创建版块 申请版主

    快速回复

    您需要登录后才可以回帖
    登录 | 注册
    高级模式

    论坛热帖

    快速回复 广东快乐十分走势图 返回列表
  • 滨海湾新区要变“湾区明珠” 2019-05-21
  • 孙杨、宁泽涛扛起中国游泳大旗 2019-05-11
  • 那你就写个帖子驳呀!告诉你,我是普通老百姓就是错了也没有啥,你可是论坛“真理化身”呀! 2019-05-11
  • 守住青山不放松 护好绿水不辞难——在渝全国人大代表聚焦“共抓大保护、不搞大开发”专题调研记略 2019-05-10
  • 巴厘岛被爆众多海域垃圾成灾 潜水常被塑料瓶塑料袋包围 2019-05-04
  • 两个不能否定,怎会是停留在30年前? 2019-04-27
  • 国际在线:向世界报道中国,向中国报道世界 2019-04-27
  • 【理上网来喜迎十九大】外媒记者:稳步推进生态文明建设的中国更加美丽 2019-04-26
  • 董卿海霞李思思康辉撒贝宁 央视名嘴童年照谁更萌 2019-04-26
  • “龙江二号”微卫星传回地月合影 2019-04-18
  • 中国驻泰国大使考察合艾国光中学孔子课堂 2019-04-18
  • 【清园20年】感恩大回馈!半价!半价! 2019-04-18
  • 中央纪委紧盯节点 4年来通报曝光问题近4000起 2019-04-13
  • 2013环球企业领袖宁夏圆桌会议嘉宾云集 2019-04-13
  • 《魔兽世界》未解之谜 那些仍不能被玩家们踏足的领地 2019-04-11
  • 最近40期排列五走势图 广州开福利彩票投注站 潮州市福彩中心在哪里 河北福利彩票 18141期足彩胜负彩开奖结果 北京赛车技巧 体彩6+1开奖结果18139期 胜平负计算机 北京pk10的8码稳赢公式 大乐透规则 双色球周四走势图 安徽时时彩走势图官方网站 足彩 22选5走势图 2018香港开奖结果 新时时彩几点开