https://github.com/RoboMaster/Development-Board-C-Examples
keil配置
点击5工程设置,进行工程相关设置,选择Output,其中Create HEX file为是否生成HEX文件,Browse Information为是否增加浏览信息,选择是,可以使用鼠标右键点击函数进行跳转操作,但会增加编译时长;
点击C/C++,其中1方框为工程宏定义设置,可在此添加宏定义;2方框为头文件引用目录,对于项目自行建立的h文件需要在此处进行目录录入;
keil调试模式
watch窗口可以参看变量的数值大小
可以在需要参看的变量点击右键,将其加入watch窗口
如果数据在程序运行中无变化,除了数据本身没有发生变化的场合,还可能由于未开启PeriodicWindows Update。
HAL_GPIO_WritePin函数
HAL_Delay函数
定时器
预分频寄存器TIMx_PSC
46 © 2020 大疆创新 版权所有
计数器寄存器TIMx_CNT
自动重装载寄存器TIMx_ARR
时钟源处的时钟信号经过预分频寄存器,按照预分频寄存器内部的值进行分频。比如时钟源的频率为16MHz,而预分频寄存器中设置的值为16:1,那么通过预分频后进入定时器的时钟频率就下降到了1MHz。
在已经分频后的定时器时钟驱使下,TIMx_CNT根据该时钟的频率向上计数,直到TIMx_CNT的值增长到与设定的自动重装载寄存器TIMx_ARR相等时,TIMx_CNT被清空,并重新从0开始向上计数,TIMx_CNT增长到TIMx_ARR中的值后被清空时产生一个定时中断触发信号。综上定时器触发中断的时间是由设定的TIMx_PSC中的分频比和TIMx_ARR中的自动重装载值共同决定的。
定时器是stm32中非常重要的外设。在大多数应用场景中,部分任务需要周期性的执行,比如上一讲中提到的LED闪烁,这个功能就可以依靠定时器来实现,此外stm32的定时器还能够提供PWM输出,输入捕获,输出比较等多种功能。
对信号处理方式
在STM32中,对信号的处理可以分为轮询方式和中断方式,轮询方式就是不断去访问一个信号的端口,看看有没有信号进入,有则进行处理,中断方式则是当输入产生的时候,产生一个触发信号告诉STM32有输入信号进入,需要进行处理。
定时器回调函数
PWM
p63 4.4.2
HAL_TIM_Base_Start(&htim1); //定时器开始
HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1); //开启PWM功能
while(1)
{
__HAL_TIM_SetCompare(&htim1, TIM_CHANNEL_1, 50);
}