Browse Source

添加项目文件。

master
zhaohe 4 years ago
parent
commit
b75770ccc7
  1. 100
      stm32_pwm_computer.cpp
  2. 31
      stm32_pwm_computer.sln
  3. 147
      stm32_pwm_computer.vcxproj
  4. 22
      stm32_pwm_computer.vcxproj.filters

100
stm32_pwm_computer.cpp

@ -0,0 +1,100 @@
#define _CRT_SECURE_NO_DEPRECATE
#include <stdio.h>
#include <stdint.h>
#include <stdbool.h>
typedef struct
{
int autoreload;
int prescaler;
float realfreq;
} timer_config_t;
bool compute_timer_parameter(timer_config_t* config, int timer_in_clk /*mhz*/, int infreq /*hz*/)
{
float psc_x_arr =(float) timer_in_clk * 1000 /*定时器模块时钟*/ * 1000 / infreq;
uint32_t psc = 0;
uint32_t arr = 65534;
for (; arr > 2; arr--)
{
psc =(uint32_t)( psc_x_arr / arr);
if (psc >= 1)
{
uint32_t tmparr = psc_x_arr / psc;
if (tmparr >= 65534)
continue;
break;
}
}
if (psc == 0)
return false;
if (arr <= 3)
return false; //定时器一周期的分辨率太小了
arr = psc_x_arr / psc;
int psc_x_arr_real = arr * psc;
float realfreq = timer_in_clk * 1000.0 /*定时器模块时钟*/ * 1000 / psc_x_arr_real;
arr = arr - 1;
psc = psc - 1;
config->autoreload = arr;
config->prescaler = psc;
config->realfreq = realfreq;
// config->compare = arr / 2;
return false;
}
void dumpconfig_info(timer_config_t* config)
{
printf("* freq : %f \n", config->realfreq);
printf("* prescaler : %d \n", config->prescaler);
printf("* autoreload: %d \n", config->autoreload);
}
int main(int argc, char const* argv[])
{
if (argc != 3)
{
printf("%s system_clk mhz expect_freq khz\n", argv[0]);
return -1;
}
float expect_freq = 0;
float systemclk = 0;
sscanf(argv[1], "%f", &systemclk);
sscanf(argv[2], "%f", &expect_freq);
printf("systemclk : %f mhz\n", systemclk);
printf("expect freq: %f khz\n", expect_freq);
int32_t infreq = (int32_t)(expect_freq * 1000);
timer_config_t timerconfig_apb1;
timer_config_t timerconfig_apb2;
//apb1
compute_timer_parameter(&timerconfig_apb1, systemclk / 2, infreq);
//apb2
compute_timer_parameter(&timerconfig_apb2, systemclk, infreq);
printf("******************************************************\n");
printf("* APB1: TIM2 TIM3 TIM4 TIM5 TIM6 TIM7 TIM12 TIM13 TIM14\n");
printf("*\n");
printf("* timer_module_clk: %f mhz\n", systemclk / 2);
printf("* freq : %f khz\n", timerconfig_apb1.realfreq / 1000.0);
printf("* period : %f ms\n", (1.0 / timerconfig_apb1.realfreq * 1000));
printf("* prescaler : %d \n", timerconfig_apb1.prescaler);
printf("* autoreload : %d \n", timerconfig_apb1.autoreload);
printf("*\n");
printf("**\n");
printf("* APB2: TIM1 TIM8 TIM9 TIM10 TIM11\n");
printf("*\n");
printf("* timer_module_clk: %f mhz\n", systemclk);
printf("* freq : %f khz\n", timerconfig_apb2.realfreq / 1000.0);
printf("* period : %f ms\n", (1.0 / timerconfig_apb2.realfreq * 1000));
printf("* prescaler : %d \n", timerconfig_apb2.prescaler);
printf("* autoreload : %d \n", timerconfig_apb2.autoreload);
printf("***\n");
return 0;
}

31
stm32_pwm_computer.sln

@ -0,0 +1,31 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.0.32014.148
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "stm32_pwm_computer", "stm32_pwm_computer.vcxproj", "{855C915D-29AE-4273-80AA-3374E8B9803F}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{855C915D-29AE-4273-80AA-3374E8B9803F}.Debug|x64.ActiveCfg = Debug|x64
{855C915D-29AE-4273-80AA-3374E8B9803F}.Debug|x64.Build.0 = Debug|x64
{855C915D-29AE-4273-80AA-3374E8B9803F}.Debug|x86.ActiveCfg = Debug|Win32
{855C915D-29AE-4273-80AA-3374E8B9803F}.Debug|x86.Build.0 = Debug|Win32
{855C915D-29AE-4273-80AA-3374E8B9803F}.Release|x64.ActiveCfg = Release|x64
{855C915D-29AE-4273-80AA-3374E8B9803F}.Release|x64.Build.0 = Release|x64
{855C915D-29AE-4273-80AA-3374E8B9803F}.Release|x86.ActiveCfg = Release|Win32
{855C915D-29AE-4273-80AA-3374E8B9803F}.Release|x86.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {F94697A8-537D-4F75-9A90-2916196874F0}
EndGlobalSection
EndGlobal

147
stm32_pwm_computer.vcxproj

@ -0,0 +1,147 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<VCProjectVersion>16.0</VCProjectVersion>
<Keyword>Win32Proj</Keyword>
<ProjectGuid>{855c915d-29ae-4273-80aa-3374e8b9803f}</ProjectGuid>
<RootNamespace>stm32pwmcomputer</RootNamespace>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="Shared">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="stm32_pwm_computer.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

22
stm32_pwm_computer.vcxproj.filters

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="源文件">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="头文件">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
</Filter>
<Filter Include="资源文件">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="stm32_pwm_computer.cpp">
<Filter>源文件</Filter>
</ClCompile>
</ItemGroup>
</Project>
Loading…
Cancel
Save