From ceface6d25a0c734647c38bc590b597aaa8e7ddf Mon Sep 17 00:00:00 2001 From: zhaohe <1013909206@qq.com> Date: Tue, 7 Jun 2022 19:34:26 +0800 Subject: [PATCH] update --- linux/main.c | 53 ++++++++++++++++++----------------------- release/stm32_pwm_computer.exe | Bin 66048 -> 65536 bytes windows/stm32_pwm_computer.cpp | 33 ++++++++----------------- 3 files changed, 33 insertions(+), 53 deletions(-) diff --git a/linux/main.c b/linux/main.c index 6739423..8382b28 100644 --- a/linux/main.c +++ b/linux/main.c @@ -52,14 +52,14 @@ typedef struct float realfreq; } timer_config_t; -bool compute_timer_parameter(timer_config_t *config, int timer_in_clk /*mhz*/, int infreq /*hz*/) +bool compute_timer_parameter(timer_config_t* config, int timer_in_clk /*mhz*/, int infreq /*hz*/) { - float psc_x_arr = timer_in_clk * 1000 /*定时器模块时钟*/ * 1000 / infreq; + float psc_x_arr =(float) timer_in_clk * 1000 /*定时器模块时钟*/ * 1000 / infreq; uint32_t psc = 0; uint32_t arr = 65534; for (; arr > 2; arr--) { - psc = psc_x_arr / arr; + psc =(uint32_t)( psc_x_arr / arr); if (psc >= 1) { uint32_t tmparr = psc_x_arr / psc; @@ -72,7 +72,6 @@ bool compute_timer_parameter(timer_config_t *config, int timer_in_clk /*mhz*/, i return false; if (arr <= 3) return false; //定时器一周期的分辨率太小了 - arr = psc_x_arr / psc; int psc_x_arr_real = arr * psc; @@ -85,58 +84,52 @@ bool compute_timer_parameter(timer_config_t *config, int timer_in_clk /*mhz*/, i config->prescaler = psc; config->realfreq = realfreq; // config->compare = arr / 2; - return false; } -void dumpconfig_info(timer_config_t *config) +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[]) +int main(int argc, char const* argv[]) { if (argc != 3) { - printf("%s system_clk mhz expect_freq khz\n", argv[0]); + printf("%s timerInClk mhz expect_freq khz\n", argv[0]); return -1; } float expect_freq = 0; - float systemclk = 0; - sscanf(argv[1], "%f", &systemclk); + float timerInClk = 0; + + sscanf(argv[1], "%f", &timerInClk); sscanf(argv[2], "%f", &expect_freq); - printf("systemclk : %f mhz\n", systemclk); - printf("expect freq: %f khz\n", expect_freq); + + printf("******************************************************\n"); + printf("* author: zhaohe *\n"); + printf("* e-mail: h_zhaohe@163.com *\n"); + printf("******************************************************\n"); + printf("*\n"); + printf("* timerInClk : %f mhz\n", timerInClk); + printf("* expect freq: %f khz\n", expect_freq); + printf("*\n"); 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); + compute_timer_parameter(&timerconfig_apb2, timerInClk, 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("* timer_module_clk: %f mhz\n", timerInClk); 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"); + printf("*\n"); + return 0; -} +} \ No newline at end of file diff --git a/release/stm32_pwm_computer.exe b/release/stm32_pwm_computer.exe index 8d0ba488dee500988f8c9532610e055a1640cff3..f90c5f61ac856b0a3abb0f73eee64e4a1129c258 100644 GIT binary patch delta 9438 zcmZu$3tUvy)<5SsBM*fcg+TYE?-J!Sm zI~&&_#Q${(?l}PJ`Y*PyL#eHDoFFugB`E6-_>rU?CP4UjKoCKIFW@#A{>%gz1_QqA z3fLP7C?OXYxrD|8qDdN0&WQx?k@XD&;J>^;1*Aj)jHGKCNIL3y z0$JA}!q!+z$}7}YCUqT5maoaDg^dK1z;o%(*Q~+Ri4&m@|#9QN$~^N zsg}0KDX(|Q`z5O09Gb)^YF3l?6Ex-`%KuTS@|!~dJ|h9DK7d$qd6(dPEWkAuFoYsH zQU_`>tfbh1q|2vfDy>EgZSN$CI6Rj2-=Mw#BL!df13aGrh@y}<3i%&0EQ|pxA*i6r zT%d_HQ)PybHJbcBBPpAt?|K0iQ}bDB&L*iq56Gbzhf;m_j{%&)gr_ye;}LG$Og{4| zr4MLBw2=9cI6wtSqiLj7v^)Ee%S3Yim<&cL%0ALvB;A?LfC`e9A;GF8lP`2&m7S7( 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 diff --git a/windows/stm32_pwm_computer.cpp b/windows/stm32_pwm_computer.cpp index 968dbf8..80c94c6 100644 --- a/windows/stm32_pwm_computer.cpp +++ b/windows/stm32_pwm_computer.cpp @@ -56,51 +56,38 @@ int main(int argc, char const* argv[]) { if (argc != 3) { - printf("%s system_clk mhz expect_freq khz\n", argv[0]); + printf("%s timerInClk mhz expect_freq khz\n", argv[0]); return -1; } float expect_freq = 0; - float systemclk = 0; + float timerInClk = 0; - sscanf(argv[1], "%f", &systemclk); + sscanf(argv[1], "%f", &timerInClk); sscanf(argv[2], "%f", &expect_freq); printf("******************************************************\n"); - printf("* author: 赵贺 *\n"); - printf("* e-mail: zhaohe@163.net *\n"); + printf("* author: zhaohe *\n"); + printf("* e-mail: h_zhaohe@163.com *\n"); printf("******************************************************\n"); printf("*\n"); - printf("* systemclk : %f mhz\n", systemclk); + printf("* timerInClk : %f mhz\n", timerInClk); printf("* expect freq: %f khz\n", expect_freq); printf("*\n"); 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); + compute_timer_parameter(&timerconfig_apb2, timerInClk, infreq); printf("******************************************************\n"); - printf("* APB1: TIM2 TIM3 TIM4 TIM5 TIM6 TIM7\n"); - printf("* 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("* APB2: TIM1 TIM8 TIM9 TIM10 TIM11\n"); - printf("*\n"); - printf("* timer_module_clk: %f mhz\n", systemclk); + printf("* timer_module_clk: %f mhz\n", timerInClk); 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"); + printf("*\n"); + return 0; } \ No newline at end of file