中级会员
 
- 积分
- 494
- 金钱
- 494
- 注册时间
- 2017-10-14
- 在线时间
- 76 小时
|
5金钱
本人使用TOUCHGFX进行界面设计,但是用的是C++,而其他外设操作使用的确是C语言,那么,怎样在C语言中调用C++中声明的变量呢??
请问如何在C文件中使用下面这个htim3这一结构体??
- namespace touchgfx
- {
- static TIM_HandleTypeDef htim3;
- void STM32F7Instrumentation::init()
- {
- RCC_ClkInitTypeDef clkconfig;
- uint32_t uwTimclock, uwAPB1Prescaler = 0U;
- uint32_t pFLatency;
- __TIM2_CLK_ENABLE();
- TIM_MasterConfigTypeDef sMasterConfig = {0};
- TIM_OC_InitTypeDef sConfigOC = {0};
- htim3.Instance = TIM3;
- htim3.Init.Prescaler = 1080-1;
- htim3.Init.CounterMode = TIM_COUNTERMODE_UP;
- htim3.Init.Period = 1000-1;
- htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
- htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
- if (HAL_TIM_PWM_Init(&htim3) != HAL_OK)
- {
- Error_Handler( );
- }
- sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
- sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
- if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK)
- {
- Error_Handler( );
- }
- sConfigOC.OCMode = TIM_OCMODE_PWM1;
- sConfigOC.Pulse = 500;
- sConfigOC.OCPolarity = TIM_OCPOLARITY_LOW;
- sConfigOC.OCFastMode = TIM_OCFAST_ENABLE;
- if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_3) != HAL_OK)
- {
- Error_Handler( );
- }
- sConfigOC.OCMode = TIM_OCMODE_PWM1;
- sConfigOC.Pulse = 500;
- sConfigOC.OCPolarity = TIM_OCPOLARITY_LOW;
- sConfigOC.OCFastMode = TIM_OCFAST_ENABLE;
- if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_4) != HAL_OK)
- {
- Error_Handler( );
- }
- /* Get clock configuration */
- HAL_RCC_GetClockConfig(&clkconfig, &pFLatency);
- /* TIM2 is on APB1 bus */
- uwAPB1Prescaler = clkconfig.APB1CLKDivider;
- if (uwAPB1Prescaler == RCC_HCLK_DIV1)
- uwTimclock = HAL_RCC_GetPCLK1Freq();
- else
- uwTimclock = 2 * HAL_RCC_GetPCLK1Freq();
- m_sysclkRatio = HAL_RCC_GetHCLKFreq() / uwTimclock;
- HAL_TIM_Base_Start(&htim3);
- }
- //Board specific clockfrequency
- unsigned int STM32F7Instrumentation::getElapsedUS(unsigned int start, unsigned int now, unsigned int clockfrequency)
- {
- return ((now - start) + (clockfrequency / 2)) / clockfrequency;
- }
- unsigned int STM32F7Instrumentation::getCPUCycles()
- {
- return __HAL_TIM_GET_COUNTER(&htim3) * m_sysclkRatio;
- }
- void STM32F7Instrumentation::setMCUActive(bool active)
- {
- if (active) //idle task sched out
- {
- cc_consumed += getCPUCycles() - cc_in;
- }
- else //idle task sched in
- {
- cc_in = getCPUCycles();
- }
- }
- }
复制代码 |
|