INTERRUPT_HANDLER(UART1_RX_IRQHandler,18)
{
/*Inordertodetectunexpectedeventsduringdevelopment,
itisrecommendedtosetabreakpointonthefollowinginstruction.
*/
//下面是我做的安卓上位机发送过来的数据判断,这里可以改成自己想要的程序
uint8_ttempData;
tempData=UART1_ReceiveData8();
if(tempData==‘A’)
{
channel=0;
}
if(tempData==‘Z’)
{
channel=1;
}
//清除UART1中断标识符
UART1_ClearITPendingBit(UART1_IT_RXNE);
}
//定时器4计数器溢出中断
INTERRUPT_HANDLER(TIM4_UPD_OVF_IRQHandler,23)
{
/*Inordertodetectunexpectedeventsduringdevelopment,
itisrecommendedtosetabreakpointonthefollowinginstruction.
*/
//1*10m执行一次
i++;
if(i==10)
{
//进行ADC数模转换
//初始化ADC芯片,写入通道
AD_init(channel);
u8u8_adc1_value;
//进行数据读出
u8_adc1_value=AD_read();
//发送8位数据
UART1_mysend8hex(u8_adc1_value);
//清除UART1中断标识符
UART1_ClearITPendingBit(UART1_IT_RXNE);
i=0;
}
TIM4_ClearITPendingBit(TIM4_IT_UPDATE);
}
这里说说ADC0832的操作函数:ADC0832.c
程序包括初始化STM8的GPIO,初始化ADC0832和读取ADC0832数据
主要是DODI端口复用的问题,由于STM8端口作为输入输出,需要重新初始化GPIO,所以比一般51单片机的程序要复杂一点。最后读取数据先是从高位读出,再低位读出,进行校验,相同数值再输出。
附上时序图
ADC0832.c程序:
/**********************************************
程序名称:ADC0832子程序
作者:devinzhang91
时间:2014.10.04
**********************************************/
#ifndefADC0832_H
#defineADC0832_H
#include“stm8s.h”
//端口设置
#defineCLK_GPIO_PORT(GPIOC)
#defineCLK_GPIO_PINS(GPIO_PIN_3)
#defineDI_GPIO_PORT(GPIOC)
#defineDI_GPIO_PINS(GPIO_PIN_4)
#defineDO_GPIO_PORT(GPIOC)
#defineDO_GPIO_PINS(GPIO_PIN_4)
#defineCS_GPIO_PORT(GPIOC)
#defineCS_GPIO_PINS(GPIO_PIN_1)
函数名称:voidioInit(void)
函数作用:初始化GPIO
参数说明:null
voidioInit(void)
{
责任编辑;zl
关于控制,MCU就介绍完了,您有什么想法可以联系小编。