历史上的今天
返回首页

历史上的今天

今天是:2025年08月14日(星期四)

正在发生

2020年08月14日 | 基于srtm32驱动步进电机Proteus仿真程序

2020-08-14 来源:51hei

单片机源程序如下:

#include "main.h"

#include "stm32f1xx_hal.h"


TIM_HandleTypeDef htim1;


void LcdDelay(uint32_t time)

{

        while(time--);

}


void _NOP_(void)

{

    uint32_t i = 100;

    while(i > 0)

                {

        i--;

    }

}


void Delay(__IO uint32_t nCount)         

{

        for(; nCount != 0; nCount--);

}


void delay_us(__IO uint32_t nTime)

{

    int old_val, new_val, val;


    if(nTime > 900)

    {

        for(old_val = 0; old_val < nTime/900; old_val++)

        {

            delay_us(900);

        }

        nTime = nTime%900;

    }


    old_val = SysTick->VAL;

    new_val = old_val - 72*nTime;

    if(new_val >= 0)

    {

        do

        {

            val = SysTick->VAL;

        }

        while((val < old_val)&&(val >= new_val));

    }

    else

    {

        new_val +=72*1000;

        do

        {

            val = SysTick->VAL;

        }

        while((val <= old_val)||(val > new_val));


    }

}




void SystemClock_Config(void)

{

  RCC_OscInitTypeDef RCC_OscInitStruct;

  RCC_ClkInitTypeDef RCC_ClkInitStruct;


  /* Initializes the CPU, AHB and APB busses clocks */

  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;

  RCC_OscInitStruct.HSIState = RCC_HSI_ON;

  RCC_OscInitStruct.HSICalibrationValue = 16;

  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;

        HAL_RCC_OscConfig(&RCC_OscInitStruct);

       

    /* Initializes the CPU, AHB and APB busses clocks */

  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK

                              |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;

  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;

  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;

  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;

  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;

        HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0);


    /* Configure the Systick interrupt time */

  //HAL_SYSTICK_Config( HAL_RCC_GetHCLKFreq()/1000 );

        SysTick_Config(HAL_RCC_GetHCLKFreq()/1000);

  // SysTick_Config(72000000/1000);



                /* Configure the Systick  */

  HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);


  /* SysTick_IRQn interrupt configuration */

  HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);

}




static void MX_GPIO_Init(void)

{

  GPIO_InitTypeDef GPIO_InitStruct;


  __HAL_RCC_GPIOA_CLK_ENABLE();

        __HAL_RCC_GPIOB_CLK_ENABLE();

  __HAL_RCC_GPIOC_CLK_ENABLE();


        HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2, GPIO_PIN_SET);

  GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2;

  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;

  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;

  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

       

        HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET);

        GPIO_InitStruct.Pin = GPIO_PIN_All;

        HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);

}


/* TIM1 init function */

static void MX_TIM1_Init(void)

{

  TIM_ClockConfigTypeDef sClockSourceConfig;

  TIM_MasterConfigTypeDef sMasterConfig;


  htim1.Instance = TIM1;

  htim1.Init.Prescaler = 0;

  htim1.Init.CounterMode = TIM_COUNTERMODE_UP;

  htim1.Init.Period = 0;

  htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;

  htim1.Init.RepetitionCounter = 0;

  HAL_TIM_Base_Init(&htim1);

  

  sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;

  HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig);

  

  sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;

  sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;

  HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig);

}


#define Delay_ms(x) Delay_us(1000*x)         //单位ms



#define uchar unsigned char

#define uint unsigned int


uchar fan[] = {0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01};                                                //正向

uchar zheng[] = {0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};                                        //反向



int main(void)

……………………


推荐阅读

史海拾趣

D3公司的发展小趣事

在环保意识日益增强的今天,D3公司积极响应国家号召,将绿色环保理念融入企业的生产经营中。公司采用环保材料和清洁能源进行生产,减少了对环境的污染。同时,公司还加强了对废弃物的处理和回收利用,实现了资源的循环利用。这种绿色环保的生产方式,不仅降低了企业的生产成本,也提高了企业的社会责任感。在消费者的心中,D3公司也因此树立了环保、负责的良好形象。

Cogent_Computer_Systems公司的发展小趣事

在电子行业中,技术创新是企业发展的核心驱动力。Cogent_Computer_Systems公司深知这一点,因此始终坚持将大量资金投入研发领域。公司建立了一支高素质的研发团队,并配备了先进的研发设备。通过持续不断的研发投入,公司成功推出了一系列具有创新性的产品,满足了市场不断变化的需求。这种以研发驱动的发展模式使得公司在激烈的市场竞争中始终保持领先地位。

Cal Test Electronics公司的发展小趣事

随着公司的发展,Cal Test Electronics逐渐与B&K Precision建立了紧密的合作关系。作为姊妹公司,双方在技术研发、产品制造和市场推广等方面展开了深度合作。这种共生关系不仅为Cal Test Electronics带来了更多的资源和支持,也使其在电子配件和测试产品领域的影响力逐渐扩大。通过共享技术和市场资源,双方共同推动了行业的发展。

Caddell-Burns Manufacturing公司的发展小趣事

随着环保意识的日益增强,Caddell-Burns Manufacturing公司也积极响应国家号召,致力于实现绿色发展。公司引进了先进的环保设备和技术,对生产过程中的废弃物进行无害化处理。同时,公司还研发了一系列环保型电子产品,满足了客户对绿色产品的需求。此外,公司还加强了对员工的环保教育,提高他们的环保意识,共同为保护环境贡献力量。

通过以上五个故事,我们可以看到Caddell-Burns Manufacturing公司在电子行业里发展起来的艰辛与辉煌。他们凭借过硬的技术实力、敏锐的市场洞察力和卓越的管理能力,在激烈的市场竞争中脱颖而出,成为一家备受瞩目的电子制造企业。

ebm-papst公司的发展小趣事

在巩固欧洲市场的基础上,ebm-papst不断拓展全球市场,特别是亚洲市场。近年来,公司在亚洲市场的营收增长率一直保持在较高水平。为了进一步拓展亚洲市场,ebm-papst加大了在中国的产能建设,陆续在上海、西安等地进行扩建和新建产能。这些措施使得ebm-papst能够更好地满足亚洲市场的需求,并为其在全球市场的进一步发展奠定了坚实基础。

Gazelle Microcircuits Inc公司的发展小趣事
与-5V类似,-12V电压也在早期的电脑主板中被使用,但主要用于一些特殊的模拟电路或模块。然而,在现代主板设计中,-12V电压的需求已经大大减少或完全消失。

问答坊 | AI 解惑

龙芯中文资料

龙芯资料中文手册! 看看国产IP核心,比价和arm的优缺点!支持国货!好久没上来了,看到大家的回复决定把售价改了!半买半送! [ 本帖最后由 tashanshi 于 2009-4-15 14:57 编辑 ]…

查看全部问答>

《HT48Rxx I/O 型MCU在家庭防盗系统中的应用》

作  者: 吴孔松 编著    出 版 社: 北京航空航天大学出版社 出版时间: 2008-6-1 版  次: 1 页  数: 321 开  本: 16开 内容简介 本书以家庭防盗系统为主线,以Holtek公司的HT48R系列单片机为辅线,重点介绍HT48R系列的基 ...…

查看全部问答>

这个电路能否理解成差分放大器?

一端输入始终为零,一端输入信号,那把它看成个双端输入的放大器行不行啊? …

查看全部问答>

内存条能带毒吗?

为什么我加了个512的内存条之后,关机界面变了?…

查看全部问答>

eboot.nb0大小问题

我正在学习bootloader, 想自己改写个eboot试试。 可是生成的eboot.nb0大小为256k,实验箱原来的是88k。 256k的可以烧进去但是启动后没有反应, 谁知道为什么写进去了,却没反应么? …

查看全部问答>

WinCE自带数据库应用问题

以下是自己写的一段小程序,运行的时候总是不能进入到switch语句的分支内,即不会有Refreshing11!的提示。数据库内已经存入数据,只是想在一个ClistCtrl控件中显示其数据。 请问问题出在什么地方? void CTCPClientDlg::RefreshDB() {  & ...…

查看全部问答>

stm8冷启动和热启动的判断

                                 热启动的时候想保持一个变量不变,但是又不能存在eeprom和FALSH中怎么办啊?…

查看全部问答>

PSoC4 Cortex-M0开发板不是今天公布吗

怎么还没有消息啊,今天不是5号吗????…

查看全部问答>

MSP430在CCS开发环境下精确延迟程序!

楼主也是在精确延迟程序是钻研了很久,经常弄不出结果!下面是代码解析!大家有什么问题,可以继续交流!以后再钻研低功耗的问题! #include \"msp430g2553.h\" typedef unsigned int uint; typedef unsigned char uchar; //没想到在CCS下面下 ...…

查看全部问答>

AGM1微动能发电模块

AGM1微动能发电模块 概述AGM1是一款具有超高性价比的微动能发电模块。AGM1通过捕获机械能,改变磁场磁通量,产生感应电流从而把机械能转化为电能,为低功耗的无线发射模块供电。配合我司的超低功耗无线发射模块AGTX1,可以轻松构建无源无线发射模 ...…

查看全部问答>