[STM32F0] F030初探【呼吸灯】

[复制链接]
2704|12
 楼主| duanks 发表于 2013-12-27 22:10 | 显示全部楼层 |阅读模式
电磁场看的头都晕了,开学不努力,期末徒伤悲
辛苦抽时间写了个小程序,证明我不完全是伸手党:)顺便求F429的板子快些发货,不然就放假了:lol
  1. #include "main.h"
  2. void Delay(__IO uint32_t nTime);
  3. int main()
  4. {
  5.   SysTick_Config(SystemCoreClock / 100);
  6.   
  7.   RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC,ENABLE);
  8.   GPIO_InitTypeDef gpio;
  9.   gpio.GPIO_Mode=GPIO_Mode_AF;
  10.   gpio.GPIO_OType=GPIO_OType_PP;
  11.   gpio.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9;
  12.   gpio.GPIO_Speed = GPIO_Speed_Level_1;  //没以前直观了
  13.   gpio.GPIO_PuPd=GPIO_PuPd_NOPULL;
  14.   GPIO_Init(GPIOC,&gpio);
  15.   
  16.   RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
  17.   GPIO_PinAFConfig(GPIOC,GPIO_PinSource8,GPIO_AF_1);  //也没以前直观了
  18.   GPIO_PinAFConfig(GPIOC,GPIO_PinSource9,GPIO_AF_1);
  19.   
  20.   TIM3->CR1 = TIM_CR1_ARPE; //使能ARR缓冲
  21.   TIM3->CCMR2 = TIM_CCMR2_OC3M_2 + TIM_CCMR2_OC3M_1 + TIM_CCMR2_OC3PE +
  22.                 TIM_CCMR2_OC4M_2 + TIM_CCMR2_OC4M_1 + TIM_CCMR2_OC4PE; //3、4通道配置为PWM Mode 1
  23.   TIM3->CCER = TIM_CCER_CC3E + TIM_CCER_CC4E; //使能信号输出
  24.   TIM3->ARR = 42000000 / 1000; //1KHz PWM
  25.   
  26.   TIM3->EGR = TIM_EGR_UG; //更新寄存器
  27.   TIM3->CR1 |= TIM_CR1_CEN;  //使能定时器
  28.   
  29.   NVIC_InitTypeDef tim3_it;
  30.   tim3_it.NVIC_IRQChannel = TIM3_IRQn ;
  31.   tim3_it.NVIC_IRQChannelCmd = ENABLE ;
  32.   tim3_it.NVIC_IRQChannelPriority = 3 ;
  33.   NVIC_Init(&tim3_it);
  34.   
  35.   TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);
  36.   
  37.   while(1)
  38.   {
  39.   }
  40. }
  41. void TIM3_IRQHandler(void)
  42. {
  43.   static uint16_t n = 0;  //以前的u8 u16也没有了,库仍须完善
  44.   static uint16_t flag = 0;
  45.   if( flag == 0 )
  46.     n++;
  47.   else
  48.     n--;
  49.   if( n == 0 || n == 1000 )
  50.     flag = !flag;
  51.   
  52.   TIM3->CCR3 = 42000000 / 1000  / 1000 * n ;
  53.   TIM3->CCR4 = 42000000 / 1000 - TIM3->CCR3;
  54.   TIM3->SR &=~ TIM_SR_UIF;
  55. }
  56. void Delay(__IO uint32_t nTime)
  57. {
  58.   TimingDelay = nTime;

  59.   while(TimingDelay != 0);
  60. }
xwuzi 发表于 2013-12-27 22:16 | 显示全部楼层
楼主把工程打包发下吧,谢谢了:)
 楼主| duanks 发表于 2013-12-27 22:38 | 显示全部楼层
本帖最后由 duanks 于 2013-12-27 22:40 编辑

工程来了 @xwuzi

STM32F030.rar

380.92 KB, 下载次数: 41

xwuzi 发表于 2013-12-27 22:42 | 显示全部楼层
duanks 发表于 2013-12-27 22:38
工程来了 @xwuzi

xwuzi 发表于 2013-12-27 22:45 | 显示全部楼层
duanks 发表于 2013-12-27 22:38
工程来了 @xwuzi

你用的不是MDK?
 楼主| duanks 发表于 2013-12-27 22:54 | 显示全部楼层
xwuzi 发表于 2013-12-27 22:45
你用的不是MDK?

IAR的
xwuzi 发表于 2013-12-27 23:04 | 显示全部楼层
duanks 发表于 2013-12-27 22:54
IAR的

第8行和第29行在MDK中都编译不通过,IAR真神奇,可以在中间声明变量
 楼主| duanks 发表于 2013-12-27 23:22 | 显示全部楼层
KEIL也可以,在如下位置加--c99选项
@xwuzi
捕获.PNG
zlab 发表于 2013-12-28 09:06 | 显示全部楼层
什麼意思呢?
xwuzi 发表于 2013-12-28 14:26 | 显示全部楼层
duanks 发表于 2013-12-27 23:22
KEIL也可以,在如下位置加--c99选项
@xwuzi

学习了
xsgy123 发表于 2013-12-28 19:34 | 显示全部楼层
开发板不知道什么时候能发货
秋天落叶 发表于 2013-12-28 19:49 | 显示全部楼层
鼓励原创
dongranmengming 发表于 2014-1-18 14:53 来自手机 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

33

主题

142

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部