这是本文档旧的修订版!
| 银杏科技有限公司旗下技术文档发布平台 | |||
| 技术支持电话 | 0379-69926675-801 | ||
| 技术支持邮件 | Gingko@vip.163.com | ||
| 技术论坛 | http://www.eeschool.org | ||
| 版本 | 日期 | 作者 | 修改内容 | 
|---|---|---|---|
| V1.0 | 2020-04-21 | gingko | 初次建立 | 
1. 新建工程:在主界面选择File–>New Project   或者直接点击ACCEE TO MCU SELECTOR  
 2. 出现芯片型号选择,搜索自己芯片的型号,双击型号,或者点击Start Project进入配置
在搜索栏的下面,提供的各种查找方式,可以选择芯片内核、型号等等,可以帮助你查找芯片。本实验选取的芯片型号为:STM32F407IGTx。
2. 出现芯片型号选择,搜索自己芯片的型号,双击型号,或者点击Start Project进入配置
在搜索栏的下面,提供的各种查找方式,可以选择芯片内核、型号等等,可以帮助你查找芯片。本实验选取的芯片型号为:STM32F407IGTx。
 3. 配置RCC,使用外部时钟源
3. 配置RCC,使用外部时钟源
 4. 配置调试引脚
4. 配置调试引脚
 5. 将LED对应的3个引脚(PI5,PI6,PI7)设置为GPIO_Output
5. 将LED对应的3个引脚(PI5,PI6,PI7)设置为GPIO_Output
 6. 引脚模式配置
6. 引脚模式配置
 7. 设置串口
7. 设置串口
 8设置定时器
8设置定时器
 9. 时钟源设置,选择外部高速时钟源,配置为最大主频
9. 时钟源设置,选择外部高速时钟源,配置为最大主频
 10. 工程文件的设置, 这里就是工程的各种配置 我们只用到有限几个,其他的默认即可  IDE我们使用的是 MDK5
10. 工程文件的设置, 这里就是工程的各种配置 我们只用到有限几个,其他的默认即可  IDE我们使用的是 MDK5
 11. 点击Code Generator,进行进一步配置
11. 点击Code Generator,进行进一步配置
 
自行选择方式即可
12. 然后点击GENERATE CODE  创建工程
 创建成功,打开工程。
创建成功,打开工程。
#de-fi-ne __CM4_REV 0x0001U /*!< Core revision r0p1 */ #de-fi-ne __MPU_PRESENT 1U /*!< STM32F4XX provides an MPU */ #de-fi-ne __NVIC_PRIO_BITS 4U /*!< STM32F4XX uses 4 Bits for the Priority Levels */ #de-fi-ne __Vendor_SysTickConfig 0U /*!< Set to 1 if different SysTick Config is used */ #de-fi-ne __FPU_PRESENT 1U /*!< FPU present */ #define __FPU_USED 1U
for(j = 0;j < 10000;j++){
          for(i = 0;i < MAX_BLOCKSIZE;i ++){  
              res = SinCos_Test(testInput_f32[i],0);  
              if(res != 0)error_flag ++;  
          }  
      }
      time[0] = __HAL_TIM_GET_COUTER(&htim3)+ timeout*5000;
      timeout = 0;  
      __HAL_TIM_SET_COUNTER(&htim3,0);  
      for(j = 0;j < 10000;j++){  
          for(i = 0;i < MAX_BLOCKSIZE;i ++){  
              res = SinCos_Test(testIput_f32[i],1);  
              if(res != 0)error_flag ++;  
          }  
      }  
      time[1] = __HAL_TIM_GET_COUTER(&htim3)+ timeout*5000;
      if(error_flag == 0){  
          usart4.printf("*NO DSP MATH LIB runtime:%0.1fms *USE DSP MATHLIB runtime:%0.1fms\r",time[0]/10,time[1]/10);  
          LED_GREEN_ON;  
          LED_RED_OFF;  
          LED_BLUE_OFF;  
      }  
      else{  
          usart4.printf("Error\r");             
          LED_GREEN_OFF;  
          LED_RED_ON;  
          LED_BLUE_OFF;  
      }  
}  
</code>
int SinCos_Test(float testInput,unsigned char mode) { float Sinx,Cosx; float Result; switch (mode){ case 0: //不适用DSP_MATH库 Sinx = sinf(testInput); Cosx = cosf(testInput); Result = Sinx*Sinx + Cosx*Cosx; Result = fabsf(Result-1.0f); if(Result > DELTA)return -1; break; case 1://使用DSP_MATH库 Sinx = arm_sin_f32(testInput); Cosx = arm_cos_f32(testInput); Result = Sinx*Sinx + Cosx*Cosx; Result = fabsf(Result-1.0f); if(Result > DELTA)return -1; break; default: break; } return 0; } } time[0] = __HAL_TIM_GET_COUTER(&htim3)+ timeout*5000; timeout = 0; __HAL_TIM_SET_COUNTER(&htim3,0); for(j = 0;j < 10000;j++){ for(i = 0;i < MAX_BLOCKSIZE;i ++){ res = SinCos_Test(testIput_f32[i],1); if(res != 0)error_flag ++; } } time[1] = __HAL_TIM_GET_COUTER(&htim3)+ timeout*5000; if(error_flag == 0){ usart4.printf("*NO DSP MATH LIB runtime:%0.1fms *USE DSP MATHLIB runtime:%0.1fms\r",time[0] / 10, time[1] / 10); LED_GREEN_ON; LED_RED_OFF; LED_BLUE_OFF; } else{ usart4.printf("Error\r"); LED_GREEN_OFF; LED_RED_ON; LED_BLUE_OFF; } }