历史上的今天
今天是:2025年02月04日(星期二)
2020年02月04日 | STM8L学习笔记一 TIM2定时器设定系统工作计时
2020-02-04 来源:eefocus
//定时器2配置,1毫秒产生一次中断,用于系统计时
void TIM2_Init(void)
{
CLK_PeripheralClockConfig(CLK_Peripheral_TIM2,ENABLE);//将主时钟信号送给定时器4(L系列单片机必需)
TIM2_TimeBaseInit(TIM2_Prescaler_16,TIM2_CounterMode_Up,0x7D); //定时器4,将主时钟16分频.自动装载FA=125
TIM2_SetCounter(0xFA); //设定计数值FA=125
TIM2_ITConfig(TIM2_IT_Update,ENABLE);
TIM2_ARRPreloadConfig(ENABLE);
TIM2_Cmd(ENABLE); //计数器使能,开始计数
}
/*
****************************************************************************
* INTERRUPT_HANDLER(TIM2_UPD_OVF_TRG_BRK_IRQHandler, 19)
* 功能描述: TIM2中断处理函数,产生1毫秒中断,用于计时
* 返 回 值:无
****************************************************************************
*/
//中断处理函数,在中断中累加数据
INTERRUPT_HANDLER(TIM2_UPD_OVF_TRG_BRK_IRQHandler, 19)//TIM2中断处理函数,产生1毫秒中断,用于计时
{
TIM2_ClearFlag(TIM2_FLAG_Update); //清中断标志位
ms2_cnt++;
ms10_cnt++;
ms100_cnt++;
UsartTime++;
if( Second_cnt >= 999 )
{
Second_cnt = 0;
SecondFlag = 1;
}
else
{
Second_cnt++;
}
}
/*
****************************************************************************
* void Init(void)
* 功能描述: 初始化各个功能模块状态
* 返 回 值:无
****************************************************************************
*/
void Init(void)
{
asm("sim"); //关全局中断
CLK_Init( ); //时钟初始化
SPI_Initial( ); //SPI初始化sht10
GPIO_Initial( );//端口初始化
USART_Initial( );//用于485通讯
IIC_Init(); //用于传感器通讯
Init_BH1750( ); //初始化BH1750
TIM2_Init( ); //时钟2用于1毫秒计时
FLASH_DeInit(); //eeprom初始化
InitEeprom( );
InitAWU( ); //使能自动唤醒功能
asm("rim"); //开全局中断
}
/*
****************************************************************************
* main()
* 功能描述: 主函数
* 返 回 值:无
****************************************************************************
*/
#define CC1101Tx 0 //0:接收模式,1:发送模式
void main (void)
{
unsigned char i=0;
unsigned char timecnt=0;
Init();
//485设为接收模式//
//M485_Para.ReceivePoint = 0;
//M485_Para.ReadPoint = 0;
//s_connectionreset();
//Single_Write_BH1750(0x01); //传感器上电power on
//Single_Write_BH1750(0x10); //设定传感器工作模式 H- resolution mode
delay_ms(180); //延时180ms,用于等待传感器初始化
//GS_CC1101SetTRMode( RX_MODE );
while(1)
{
if( ms2_cnt > 2 )
{
ms2_cnt = 0;
//M485DataPro();//485数据处理
}
if( ms10_cnt >=10 )
{
ms10_cnt = 0;
ms10_Work();//10毫秒执行的任务
}
if( ms100_cnt >= 100 )
{
ms100_cnt = 0;
ms100_Work();//100毫秒执行的任务
}
if( SecondFlag == 1 )
{
timecnt++;
SecondFlag = 0;
Second_Work();//每秒执行的任务
#if CC1101Tx //数据发送
CC1101SendData(0x03,0x00,0x0E);
//GS_CC1101SendPacket( M485_Send_Buffer,9, ADDRESS_CHECK );
#else //数据接收
i = CC1101DataPro();
if( i== 0 )
GPIO_ToggleBits( GPIOD, GPIO_Pin_0); //反转灯的状态
for(i=0;i<27;i++)
{
putchar(M485_Para.Uart_Buffer[i]);
}
if(timecnt > 20)
{
timecnt = 0;
halt(); //进入待机模式
}
#endif
}
}
}
说明:TIM2用于产生1毫秒中断,作为系统工作节拍。main函数到10ms,100ms ,1s执行不同的任务
史海拾趣
|
特点:完善的设计规则设置,确保PCB设计符合要求 更加方便、快捷的层堆栈管理 超强的元器件布局功能 更加快捷的网络编辑功能 绝对畅快的焊盘处理功能 多重选择功能 可靠的设计规则检查 面向用户的PCB工作区 丰富的输出功能 完全可控的PCB打印… 查看全部问答> |
|
今天收到论坛赠送的这本书,书中光盘内容上传给大家,个人感觉这本书讲的挺好,涉及内容很多,共620页! 下面的文件中有一个2440开发板的PCB和 linux的电子书 [ 本帖最后由 daicheng 于 2009-9-29 13:54 编辑 ]… 查看全部问答> |
|
我的程序是: void CBrowserDlgDlg::OnButton1() { // TODO: Add your control notification handler code here // TODO: Add your control notification handler code h ...… 查看全部问答> |
|
服务器的scsi/raid驱动不安装,影响性能吗?就一个硬盘 现在我有一台服务器,之前安装的linux,没有管驱动的事情,现在改给windows,提示scsi/raid控制器的驱动没有安装, 我从网上查了一下说是支持磁盘阵列的问题,想问一下大家,我现在就一个硬盘,不安装可以吗?影响服务器的运行速度吗?… 查看全部问答> |
|
【TI原创】基于LM3S8962的网络收音机(六) --- 网络存储播放MP3 上一篇已经做好了PC端的测试程序,用来读写音频文件,并通过网路传输,这篇主要完成: 1. LM3S8962通过网络接收PC端的数据; 2. 存储数据到SD卡中 3. &nbs ...… 查看全部问答> |
|
报名链接:http://www.deyisupport.com/question_answer/f/23/t/6043.aspx 为了更好的向客户提供技术支持,TI将于每周四在TI其中一个办事处举办\"TI MCU Day\"研习班。前期覆盖深圳、上海、北京、东莞、广州、杭州、南京等主要 ...… 查看全部问答> |




