当前位置: 首页 > news >正文

网站开发周志网络营销推广服务

网站开发周志,网络营销推广服务,网站外链可以在哪些平台上做外链,b2b网站免费建设单片机GPIO中断定时器 实现模拟串口接收 解决思路代码示例 解决思路 串口波特率9600bps,每个bit约为1000000us/9600104.16us; 定时器第一次定时时间设为52us即半个bit的时间,其目的是偏移半个bit时间,之后的每104us采样并读取1bit数据。使得…

单片机GPIO中断+定时器 实现模拟串口接收

  • 解决思路
  • 代码示例

解决思路

串口波特率9600bps,每个bit约为1000000us/9600=104.16us; 定时器第一次定时时间设为52us即半个bit的时间,其目的是偏移半个bit时间,之后的每104us采样并读取1bit数据。使得采样点搞好在每位数据脉宽的中间点。

在这里插入图片描述

代码示例

  • 串口波特率9600bps,每个bit约为1000000us/9600=104.16us;
  • 定时器开始时定时时间设为52us,即半个bit的时间,并关闭定时器;
  • GPIO设为中断模式下降沿触发,测到第一个下降沿(即串口的S信号),定时器设定52us开启定时,关闭GPIO中断,并设置状态为E_IO_UART_STATE_IDLE。
  • 定时器触发52us定时E_IO_UART_STATE_IDLE状态改为E_IO_UART_STATE_START。定时器设置为104us,之后每触发一次104us定时中断读取1bit串口数据,直到8bits数据全部解析完成,重置为下次接收状态;
#if TCFG_SENSOR_CO_MODULE_EN
struct io_uart_t {uint8_t state;uint8_t index;uint8_t _data;uint8_t ready;uint8_t rxlen;uint8_t _recv[7];
};
static struct io_uart_t io_uart;
void timer1_init(void);
#endif#if TCFG_SENSOR_CO_MODULE_EN
enum {E_IO_UART_STATE_IDLE=0,     // 空闲状态E_IO_UART_STATE_START,      // 开始接收数据E_IO_UART_STATE_END,        // 数据接收完成
};#define TIMER1_TICK_HEAD         60  // 52us    104/2=52us  半个开始信号的时间
#define TIMER1_TICK_DATA         139 // 104us   1000000/9600=104.16us 一个数据位的时间
void timer1_init(void)
{SCCM1 |= RCC_SCCM1_TIMER1;TMOD  |=Bit5_En ;TMOD  &=Bit4_Dis;TH1=256-TIMER1_TICK_HEAD;        TL1=256-TIMER1_TICK_HEAD; TR1=0;        //定时器1使能运行EAL=1;        //总中断打开ET1=1;        //定时器1中断打开IRQ_Vic_Set(INT_TIMER1, pritrity_level_fourth);     // 设置定时器优先级最高// IRQ_Enable(IT_ALL);
}void Interrupt_GPIO0 (void) interrupt 20    //GPIO0中断服务程序
{// P07=~P07;if(IO_GetIntState(GPIO_P0,GPIO_Pin_6)){// P07=~P07;    // for test// TODO: 检测到第一个下降沿:S信号,设置定时器初值52us,启动定时器,关闭外部中断TH1=256-TIMER1_TICK_HEAD;  TL1=256-TIMER1_TICK_HEAD;TR1=1;io_uart.state = E_IO_UART_STATE_IDLE;IO_INT_Disable(  GPIO_P0,GPIO_Pin_6);// IRQ_Disable(IT_GPIO0);IO_CleanIntState(GPIO_P0,GPIO_Pin_6);}P0_INT_REG = 0xff;
}/*中断方式*/
void Interrupt_TIMRT1 (void) interrupt 3    //TIMRT1中断服务程序
{	uint8_t checksum = 0;TF1 = 1; //清标志// TIMER01_SetPeriod(TIMER1,TIMERMODE_VALUE,TIMER1_TICK);// P07=~P07;   // for testif (io_uart.state == E_IO_UART_STATE_START) {P07=~P07; // FOR TESTio_uart._data = io_uart._data >> 1; // 数据右移一位if (P06 == 1) { io_uart._data |= 0x80;    // 如读取到的串口GPIO电平为高,高位位或运算}io_uart.index++;if (io_uart.index == 8) {io_uart.state = E_IO_UART_STATE_END;IO_INT_Enable(  GPIO_P0,GPIO_Pin_6);// IRQ_Enable(IT_GPIO0);TR1=0;if (io_uart._data == 0xAA) {io_uart.rxlen = 0;memset(io_uart._recv, 0, sizeof(io_uart._recv));}io_uart._recv[io_uart.rxlen] = io_uart._data;io_uart.rxlen++;if (io_uart.rxlen == 7){checksum = (uint8_t)(io_uart._recv[1]+io_uart._recv[2]+io_uart._recv[3]+io_uart._recv[4]);if (checksum == io_uart._recv[5]) {// TODO: 和校验正确// P07=~P07;   // for test_this->sensor_co.covol = (uint16_t)(io_uart._recv[1]<<8 | io_uart._recv[2]);io_uart.ready = 1;}}}}if (io_uart.state == E_IO_UART_STATE_IDLE) {io_uart.state = E_IO_UART_STATE_START;io_uart.index = 0;io_uart._data = 0;TH1=256-TIMER1_TICK_DATA;        TL1=256-TIMER1_TICK_DATA;}
}
#endifvoid main ()
{
#if TCFG_SENSOR_CO_MODULE_ENtimer1_init();RCC_Sccm1_ClockCmd(RCC_SCCM1_GPIO,ENABLE);IO_FUN_Config(GPIO_P0,GPIO_Pin_7,GPIO_FUNCTION_DF0); //配置引脚为GPIO功能    	IO_OUT_Enable(GPIO_P0, GPIO_Pin_7);IO_PU_Enable(GPIO_P0, GPIO_Pin_7);// TOODO: 模拟串口接收/*只有P0和P1口可以配置为电平触发,其他端口只能配置为沿触发*/IO_FUN_Config( 	GPIO_P0,GPIO_Pin_6,GPIO_FUNCTION_DF0); //配置引脚为GPIO功能IO_PU_Enable(   GPIO_P0,GPIO_Pin_6);IO_INPUT_Enable(GPIO_P0,GPIO_Pin_6);            //配置引脚为GPIO输入模式IO_INT_Config(  GPIO_P0,GPIO_Pin_6, falling);	//需要外接接下拉电阻	IO_INT_Enable(  GPIO_P0,GPIO_Pin_6);IRQ_Enable(IT_GPIO0);
#endifwhile(1)
{...
}}
http://www.hkea.cn/news/86312/

相关文章:

  • 邓州做网站网络广告有哪些形式
  • 爬闪数媒 网站建设网站建站流程
  • 网站建设广州白云百度统计app下载
  • 惠州短视频seoseowhy论坛
  • 肇庆网站快速排名优化温州seo排名公司
  • 北京疫情死亡人数最新消息王通seo赚钱培训
  • 北京做网站的外包公司营销策划方案案例范文
  • 专业做酒店网站关键词优化排名软件流量词
  • 做网站推广代理上海网络推广服务
  • wordpress可以做大吗搜索引擎优化的英语简称
  • 民治专业做网站公司中国企业500强排行榜
  • 潍坊 公司 网站seo点击排名器
  • 网站可以做赌博广告建站宝盒
  • 运城市做网站英文seo外链
  • 江宁网站建设如何建立网上销售平台
  • 淄博企业网站建设有限公司搜索引擎关键词竞价排名
  • 网站的优点企业专业搜索引擎优化
  • 哪里有软件开发培训机构无锡seo培训
  • 网站怎么做反链seo是什么品牌
  • 技术型网站做哪一种好软文范例大全100
  • 百度搜索什么关键词能搜到网站seo高效优化
  • 网站搭建分站需要多少钱互联网营销策划
  • 音乐网站的音乐怎么做seo先上排名后收费
  • 清河做网站报价seo实战培训王乃用
  • wordpress 回收站在哪个文件夹营销方式和手段
  • 垂直型电商网站如何做快速排名软件哪个好
  • 做产品推广有网站比较好的免费自助建站平台
  • 番禺网站建设公司排名百度推广页面投放
  • 沈阳做微网站百度收录刷排名
  • 网站建设与管理技术发展seo是什么意思如何实现