历史上的今天
今天是:2024年09月08日(星期日)
2020年09月08日 | STVD中断函数写法
2020-09-08 来源:eefocus
一、寄存器开发方式
1)以定时器TIM4为例,首先对TIM4的相关寄存器进行初始化,打开TIM4的中断,注意在STVD+COSMIC的开发环境下,开总中断使用语句_asm("rim");
void TIM4_init(void) //TIM4 init
{
TIM4_CR1=0x80;
TIM4_PSCR=0x07; //clock div : 128 (T=8us)
TIM4_ARR=125; //interrupt per 1ms
TIM4_IER=0x01; //enable update interrupt
_asm("rim"); //enable EA
TIM4_EGR=0x01; //update case
TIM4_CR1|=0x01; //enable count
}
2)接下来编写TIM4的中断服务程序,可以直接写在main.c中,注意函数前一定要加@far @interrupt,中断服务函数的名称可以自己取,比如此处的TIM4_Interrupt;
@far @interrupt void TIM4_Interrupt(void)
{
TIM4_SR&=0xfe;
cnt_num4++;
if(cnt_num4>10)
{
cnt_num4=0;
flag_adc=1;
}
}
3)接下来在stm8_interrupt_vector.c文件中对中断函数进行声明,并修改中断向量表中对应的中断服务函数名称为我们定义的名称,如TIM4_Interrupt为中断向量的第23个;
extern void _stext(); /* startup routine */
extern @far @interrupt void TIM4_Interrupt(void);
{0x82, NonHandledInterrupt}, /* irq21 */
{0x82, NonHandledInterrupt}, /* irq22 */
{0x82, TIM4_Interrupt}, /* irq23 */
{0x82, NonHandledInterrupt}, /* irq24 */
{0x82, NonHandledInterrupt}, /* irq25 */
二、库函数开发方式
1)以外部中断为例,可用按键触发,首先初始化对应引脚,开启外部中断和总中断,开总中断使用语句_asm("rim");
void main(void)
{
CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);
GPIO_Init(GPIOA,GPIO_PIN_3,GPIO_MODE_OUT_PP_HIGH_FAST);
GPIO_Init(GPIOA,GPIO_PIN_2,GPIO_MODE_IN_PU_IT);
EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOA,EXTI_SENSITIVITY_FALL_ONLY);
_asm("rim");
/* Infinite loop */
while (1)
{
;
}
}
2)接下来在stm8s_it.c文件中,找到对应中断向量的中断服务程序,在里面添加代码即可;
/**
* @brief External Interrupt PORTA Interrupt routine.
* @param None
* @retval None
*/
INTERRUPT_HANDLER(EXTI_PORTA_IRQHandler, 3)
{
/* In order to detect unexpected events during development,
it is recommended to set a breakpoint on the following instruction.
*/
GPIO_WriteReverse(GPIOA,GPIO_PIN_3);
}
上一篇:STM8避坑—PB4和PB5
下一篇:关于STM8空间不足的解决方法
史海拾趣
|
大家好: 在程序中为什么要设置IE和IP?有一段程序这样写,请大家帮忙看下 MOV TMOD,#00100001B;波特率发生T1定时工作模式2(自动装载), T0定时工作模式1(16位), MOV TL0,#0caH ...… 查看全部问答> |
|
单片机控制系统 需求:1点输入,3点输出(其中2点控制电磁阀输出,1点控制继电器输出) 功能:对输入点记数 输入 输出 1次 电磁阀1输出 2次 电 ...… 查看全部问答> |
|
像单片机怎么来阅读它的数据手册来写它的一些程序呢? 比如说STC15F204EA这款单片机,要使用它的ADC模块,不知道怎么怎么写它的程序。这部分手册 看的是说要设置些寄存器,但是具体要怎么写ADC程序且无从入手。 这个芯片手册该如何阅读,头疼, ...… 查看全部问答> |
|
实物展示: 电路功能与优势 图中所示电路是一个完全隔离式低功耗pH传感器信号调理器和数字化仪,并且带有自动温度补偿以实现高精度。 该电路可为0至14范围内的pH值提供精度为0.5%的读数,无噪声代码分辨率大于14 ...… 查看全部问答> |




