外设的使用
概要:本项目用到了SPI通信和TIM4定时器。这一章将介绍如何使用C语言来调用相应外设,
调用外设分为两部分,一是初始化,二是使用外设。
初始化分为三步
外设时钟初始化-------外设时钟门控寄存器(CLK_PCKENR)---上一章时钟初始化有介绍
外设对应引脚初始化---------GPIO的寄存器 ---上一章引脚初始化有介绍
外设寄存器初始化------------外设的寄存器
使用外设,常使用的寄存器
控制寄存器(CR)
状态寄存器(SR)
数据寄存器(DR)
、、、
TIM4 实现 精准延时
查阅STM8S的参考手册,定时器最常见的使用方法是中断。如下图
本文将 “中断产生” 改成 “原地等待计数器溢出,再执行下一步” ,所以TIM4具体使用情景时
有更新事件
无中断
一次等待越久越好。所以分频系数改最大,自动重装载值(ARR)也可以改最大,设为125,一次延时正好是1ms.
delay_once = ARR*T = ARR*(1/f_cnt) = ARR*(2^PSC[2:0]/f_master)
初始化 TIM4_init()
根据上文TIM4使用情景,以下代码就容易理解了
代码如下:
void TIM4_init(void)
{
TIM4_PSCR=0x07; //2^PSC[2:0] = 2^7
TIM4_EGR=0x01; //无触发事件,有更新事件
TIM4_IER=0x00; //无触发中断和更新中断
TIM4_ARR=125; //ARR=125
TIM4_CNTR=0x00; //CLEAR COUNTER
}