2157|0

1万

帖子

16

TA的资源

版主

楼主
 

MM32F031开发板评测6:PWM呼吸灯 [复制链接]

星期天了有时间了,想搞个呼吸灯的程序试试。可是没有想到,例程里就有。
那么我就看了一下分析了一下:
首先开发板在一上电时就调用了SYSINIT

而其中的一个#define 定义了工作在48MHZ的选项:


  1. //#define SYSCLK_FREQ_HSE    HSE_VALUE
  2. //#define SYSCLK_FREQ_24MHz  24000000  
  3. //#define SYSCLK_FREQ_36MHz  36000000
  4. #define SYSCLK_FREQ_48MHz  48000000

  5. //#define SYSCLK_HSI_24MHz  24000000
  6. //#define SYSCLK_HSI_36MHz  36000000
  7. //#define SYSCLK_HSI_48MHz  48000000
复制代码




而在设为48MHz的函数里又把APB1设成了
2分频,APB2设置为1分频。
  1. * HCLK = SYSCLK */
  2.         RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1;
  3.         
  4.         /* PCLK2 = HCLK */
  5.         RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1;
  6.         
  7.         /* PCLK1 = HCLK */
  8.         RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV2;
  9.         
复制代码

而例程用的是TIM3挂在了APB1上,



但是例程的注释,应是错了,以前注释的,应是240K



因为系统时钟48MHZ,那么APB1为24MHZ
定时器3初始化时周期为99,按100算,应为240KHZ

那么到底对不对,我用手机的秒表,秒杀一下。


主程序如下:
  1. int main(void)
  2. {
  3.     u8 dir=1;       
  4.     u16 led0pwmval=0;   
  5.    
  6.     delay_init();       
  7.     uart_initwBaudRate(115200);
  8.     LED_Init();
  9.     TIM3_PWM_Init(99,0);//2»·ÖÆμ
  10.     while(1)       //ÎTÏTÑ-»·
  11.     {
  12.         delay_ms(4);         
  13.         if(dir)led0pwmval++;
  14.         else led0pwmval--;         
  15.         if(led0pwmval>300)dir=0;
  16.         if(led0pwmval==0)dir=1;                                                    
  17.         TIM_SetCompare1(TIM3,led0pwmval);         
  18.     }       
  19. }

复制代码

可见每300个就换相,也就是600次为一周期。而程序明显看出每一次延4MS
这样就是2.4秒,那么手机秒杀的也差不多。

以下是运行的视频:
http://v.youku.com/v_show/id_XMz ... j.8428770.3416059.1
此帖出自电机控制论坛
点赞 关注
个人签名http://shop34182318.taobao.com/
https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr
 
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表