这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
icore3_arm_hal_41 [2020/04/21 16:50] zgf [六、 实验现象] |
icore3_arm_hal_41 [2022/03/18 15:12] (当前版本) sean |
||
---|---|---|---|
行 2: | 行 2: | ||
|技术支持电话|**0379-69926675-801** ||| | |技术支持电话|**0379-69926675-801** ||| | ||
|技术支持邮件|Gingko@vip.163.com ||| | |技术支持邮件|Gingko@vip.163.com ||| | ||
- | |技术论坛|http://www.eeschool.org ||| | ||
^ 版本 ^ 日期 ^ 作者 ^ 修改内容 ^ | ^ 版本 ^ 日期 ^ 作者 ^ 修改内容 ^ | ||
| V1.0 | 2020-04-21 | gingko | 初次建立 | | | V1.0 | 2020-04-21 | gingko | 初次建立 | | ||
行 10: | 行 9: | ||
\\ | \\ | ||
\\ | \\ | ||
+ | |||
===== STM32CbeMX教程四十一——DSP_MATH实验 ===== | ===== STM32CbeMX教程四十一——DSP_MATH实验 ===== | ||
行 111: | 行 111: | ||
* 1、ARM_MATH_CM4 | * 1、ARM_MATH_CM4 | ||
{{ :icore3:icore3_arm_hal_41_2.png?direct |}} | {{ :icore3:icore3_arm_hal_41_2.png?direct |}} | ||
- | * 2、__CC_ARM | + | * 2、_CC_ARM |
* 3、ARM_MATH_MATRIX_CHECK | * 3、ARM_MATH_MATRIX_CHECK | ||
* 4、ARM_MATH_ROUNDING | * 4、ARM_MATH_ROUNDING | ||
* 添加方法是打开工程属性设置面板,然后点击”C/C++“选项卡,在“Preprocessor Symbols“下的”Define:”文本框中进行添加。两个宏之间用“,”隔开。 | * 添加方法是打开工程属性设置面板,然后点击”C/C++“选项卡,在“Preprocessor Symbols“下的”Define:”文本框中进行添加。两个宏之间用“,”隔开。 | ||
- | === 3. 主函数 === | ||
+ | === 3. 主函数 === | ||
+ | * 主函数中通过定时器计时,计算在普通模式下浮点数的计算所用时间与DSP模式下计算浮点数所用时间相对比,将结果打印在屏幕上,显而易见,DSP模式所花费的时间更少。 | ||
<code c> | <code c> | ||
int main(void) | int main(void) | ||
行 151: | 行 152: | ||
/* USER CODE END WHILE */ | /* USER CODE END WHILE */ | ||
/* USER CODE BEGIN 3 */ | /* USER CODE BEGIN 3 */ | ||
- | timeout = 0; | + | timeout = 0; |
- | __HAL_TIM_SET_COUNTER(&htim3,0); | + | __HAL_TIM_SET_COUNTER(&htim3,0); |
for(j = 0;j < 10000;j++){ | for(j = 0;j < 10000;j++){ | ||
for(i = 0;i < MAX_BLOCKSIZE;i ++){ | for(i = 0;i < MAX_BLOCKSIZE;i ++){ | ||
行 170: | 行 171: | ||
time[1] = __HAL_TIM_GET_COUTER(&htim3)+ timeout*5000; | time[1] = __HAL_TIM_GET_COUTER(&htim3)+ timeout*5000; | ||
if(error_flag == 0){ | 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); | + | 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_GREEN_ON; | ||
LED_RED_OFF; | LED_RED_OFF; | ||
行 181: | 行 182: | ||
LED_BLUE_OFF; | LED_BLUE_OFF; | ||
} | } | ||
- | } | + | } |
</code> | </code> | ||
- | * 主函数中通过定时器计时,计算在普通模式下浮点数的计算所用时间与DSP模式下计算浮点数所用时间相对比,将结果打印在屏幕上,显而易见,DSP模式所花费的时间更少。 | + | |
=== 4. 计算函数 === | === 4. 计算函数 === | ||
<code c> | <code c> | ||
行 238: | 行 239: | ||
=== 5. 启动定时器计数模式 === | === 5. 启动定时器计数模式 === | ||
<code c> | <code c> | ||
+ | void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle) | ||
+ | { | ||
+ | if(tim_baseHandle->Instance==TIM3) | ||
+ | { | ||
+ | __HAL_RCC_TIM3_CLK_ENABLE(); | ||
+ | HAL_NVIC_SetPriority(TIM3_IRQn, 1, 0); | ||
+ | HAL_NVIC_EnableIRQ(TIM3_IRQn); | ||
+ | HAL_TIM_Base_Start_IT(&htim3);//开启定时器中断计数模式 | ||
+ | } | ||
+ | } | ||
</code> | </code> |