这里会显示出您选择的修订版和当前版本之间的差别。
| 两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
| icore3_arm_hal_41 [2020/04/21 16:39] 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)  | ||
| 行 153: | 行 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 ++){  | ||
| 行 172: | 行 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;  | ||
| 行 183: | 行 182: | ||
| LED_BLUE_OFF;  | LED_BLUE_OFF;  | ||
| }  | }  | ||
| - | } | + | } | 
| - | + | ||
| </code> | </code> | ||
| - | * 主函数中通过定时器计时,计算在普通模式下浮点数的计算所用时间与DSP模式下计算浮点数所用时间相对比,将结果打印在屏幕上,显而易见,DSP模式所花费的时间更少。 | + | |
| === 4. 计算函数 === | === 4. 计算函数 === | ||
| <code c> | <code c> | ||
| 行 242: | 行 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> | ||