(一)系统时钟(systick)
设置的很很简单,以下是出现1ms网络中断的设置,和有一种10ms显示延迟的函数:
voidrcc_configuration(void)
{
rcc_clockstypedefrcc_clockfreqsysteminit()//源自system_stm32f10x.c文件,只要动态创建此函数,则可成功rcc的配置.
rcc_getclocksfreq(amprcc_clockfreq)
//systick分频--1ms的系统时钟中断
if(systick_config(systemfrequency/1000))
{
while(1)//captureerror
}
}
voidsystick_handler(void)//在自动去处理函数中的程序
{
while(tim)
{
tim--
}
}
//动态创建程序:
delay_ms(10)
不过,前提是要设置好,变量tim要设置里成volatile类型的。
(二)第二种牵涉到定时器定时计数时间(timx)
/*tim3时钟配置*/
tim_timebasestructure.tim_prescaler2//预分频(时钟分频)72m/(21)24m
tim_timebasestructure.tim_countermodetim_countermode_up//向上升计数法
tim_timebasestructure.tim_period65535//货柜舱值18k/144125hz
tim_timebasestructure.tim_clockdivisiontim_ckd_div1
tim_timebasestructure.tim_repetitioncounter0x0
tim_timebaseinit(tim3,amptim_timebasestructure)
有定时时间计算出:
tim_timebasestructure.tim_prescaler2
//分频272m/(21)/224mhz
tim_timebasestructure.tim_period65535//数器值65535
((1tim_prescaler)/72m)*(1tim_period)((12)/72m)*(165535)0.00273秒366.2hz*/
尽量两点(无论是大虾网,未经检验)
(1)timx(1-8),在库系统设置设置为的情况下,全是72m的时钟
(2)tim_timebasestructure.tim_repetitioncounter0
是重复一遍计数,就是反复重复逸出多少次才给你来一个逸出网络中断,
它填写的寄存器叫tim1rcr.
如果不是这个值不配置,上电的时候寄存器值不过洗技能的,不过1秒网络中断四次,可能都变成n秒自动三次,让你完美头大!
假设不成立系统时钟是72mhz,tim1是由pclk2(72mhz)换取,tim2-7是由pclk1能得到
关键是设定时钟预分频数,不自动重停泊寄存器周期的值
/*每1秒发生一次可以更新事件(进入掉线服务程序)。rcc_configuration()的systeminit()的
rcc-gtcfgr|(uint32_t)rcc_cfgr_ppre1_div2因为tim3clk为72mhz。因此,每次来再次进入中
断服务程序间隔时间为
((1tim_prescaler)/72m)*(1tim_period)((17199)/72m)*(19999)1秒*/
定时器的都差不多设置
1、tim_timebasestructure.tim_prescaler7199//时钟预分频数.例如:时
钟频率72/(时钟预分频1)
2、tim_timebasestructure.tim_period9999//手动重加载寄存器周期的值(按时
时间)累计0xffff个频率后再产生个没更新的或掉线(也是说按时时间到)
3、tim_timebasestructure.tim_countermodetim1_countermode_up//定时器
模式向上计数寄存器
4、tim_timebasestructure.tim_clockdivision0x0//时间编缉值
5、tim_timebaseinit(tim2,amptim_timebasestructure)//初始化设置定时器2
6、tim_itconfig(tim2,tim_it_restore,enable)//可以打开中断泻出自动
7、tim_cmd(tim2,enable)//再打开定时器
或
如果能把st-link调试接口的4根线焊进去,就可以刷程序了。
串口rx,tx引脚也很比较方便焊出去,我直接用串口来对控制器发命令。
霍尔键入和mos输出的引脚也找出去了。还有一个电流传感器的引脚。(市面上350瓦控制器,基本都都是上网通方案)
#definehall_ugpiob,gpio_pin_5
#definehall_vgpiob,gpio_pin_6
#definehall_wgpiob,gpio_pin_7
#definedown_mos_ugpioc,gpio_pin_2
#definedown_mos_vgpioc,gpio_pin_1
#definedown_mos_wgpioe,gpio_pin_5
#defineup_mos_pwm_counter_utim1-gtccr3l
#defineup_mos_pwm_counter_vtim1-gtccr2l
#defineup_mos_pwm_counter_wtim1-gtccr1l
#defineadc_pingpiob,gpio_pin_0
有霍尔的无刷电机,按结构6步驱程法,真的是太简单啊了。一开始认为是个很隐秘的东西,做个看看,会容易就能自己抄下来了。