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单片机的程序要复杂一点。最后读取数据先是从高位读出,再低位读出,进行校验,相同数值再输出。

附上时序图

STM8单片机实现蓝牙串口通信系统的设计

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就介绍完了,您有什么想法可以联系小编。

  • UC3846控制芯片工作原理控制图 逆变焊机原理与用途
  • 数字万用表电阻档测试二极管正反向没有阻值(使用万用表测量二极管的正向电阻,为什么各档)
  • 学单片机需要学数电模电吗(学单片机要先学数电模电吗)
  • 电工怎么选择适合自己用的万用表(电工初学者买什么样的万用表好)
  • 单片机需要同时运行多个任务怎么办(单片机怎么同时执行多个任务)
  • 电机保护的方案取决于负载的机械特性
  • 绝缘电阻表正负搭接不复零位是怎么回事
  • 短路怎么用万用表查