iar for stm8外部中断程序

iar for stm8外部中断程序,第1张

GPIO_DeInit(GPIOD)//端口初始化

GPIO_Init(GPIOD, GPIO_PIN_3, GPIO_MODE_IN_PU_IT)//引脚初始化

EXTI_DeInit()//中断初始化

EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOD, EXTI_SENSITIVITY_FALL_LOW)//下降沿

enableInterrupts()//开全局中断

void CLK_INIT(void)

{

CLK_CKDIVR = 0x19 /*HSI/8、CPU = 2/2,1M速度*/

CLK_PCKENR1 = 0x04 /*只开启uart1的时钟*/

CLK_PCKENR2 = 0x00/*打开ADC的时钟*/

}

void IO_INIT(void)

{

PA_CR1 = 0x00 /*推挽输出*/

PA_CR2 = 0x00 /*最大输出为2MHZ,禁止外部中断*/

PA_DDR |= 0x20 /*PA5为输出*/

}

void UART1_INIT(void)

{

UART1_BRR2 = 0x00

UART1_BRR1 = 0x0d /*2M的Fmaster下9600的波特率*/

UART1_DR = 0xaa

UART1_CR2 = 0x08 /*发送完寄存器空,发送使能*/

UART1_CR3 = 0x00 /*1个停止位*/

}

#pragma vector = UART1_T_TXE_vector

__interrupt __root void UART1_TX(void)

{

UART1_SR = 0x00

UART1_DR = 0xaa

}

只作为参考,希望对您有帮助,谢谢!

研究了下,你描述的逻辑好像有矛盾,

我疑问如下:

控制过程如下:

pin17(PC7)收到低电平脉冲信号(脉冲长度多少?),

计时器启动(计数时间5秒?),

pin19(PD2)输出高电平(在计数计数结束后输出低电平?);

当m为奇数时,pin13(PC3)输出高电平(PIN14输出低电平?);

当m为偶数时,pin14(PC4)输出高电平(PIN13输出低电平?)。

最终计数结束后输出状态如何?

pin10(PA3)有高电平脉冲信号输入时(脉冲长度多少?),

pin19(PD2)停止输出(输出低电平还是高电平?);

如果在一个计时周期内(5秒吗?),

pin10(PA3)没有高电平信号输入(一直维持低电平吗?),

则pin18(PD1)输出高电平(有高电平脉冲信号时输出低电平?)。

pin15(PC5)有高电平脉冲信号输入时(脉冲长度多少?),

pin13(PC3)停止输出(输出低电平还是高电平?);

如果在一个计时周期内(5秒吗?),

pin15(PC5)没有高电平信号输入(一直维持低电平吗?),

且计数器值m为奇数,则pin18(PD1)输出高电平(m是偶数时怎么处理?)。

。。。。。。。。。。。

主要程序到底是触发后输出一个序列电平还是测量输入脉冲?


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/7757053.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-09
下一篇 2023-04-09

发表评论

登录后才能评论

评论列表(0条)

保存