野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 22451|回复: 2

关于wifi模块esp8266程序的问题

[复制链接]
发表于 2017-7-31 14:49:00 | 显示全部楼层 |阅读模式
10火花
以下三个问题是基于ESP8266 wifi例程中的手机app控制例程
Q1:源程序中有这么一段代码
//滴答定时器的代码
void SysTick_Init( void ){
        /* SystemFrequency / 1000    1ms中断一次
         * SystemFrequency / 100000         10us中断一次
         * SystemFrequency / 1000000 1us中断一次
         */
        if ( SysTick_Config(SystemCoreClock / 1000000) )        // ST3.5.0库版本
        {
                /* Capture error */
                while (1);
        }
                // 关闭滴答定时器  
        SysTick->CTRL &= ~ SysTick_CTRL_ENABLE_Msk;
       
}

我的理解是是 打开滴答定时器之后又关闭滴答定时器?为什么要这样做呢? 滴答定时器会产生中断吗?如果产生中断,配置中断优先级的代码在哪呢?我把中断服务函数中滴答定时器的代码也附在下面了,请解释下其中的含义啊

//中断服务程序中关于滴答定时器的代码
void SysTick_Handler(void)
{
        TimingDelay_Decrement();       
}


Q2:在bsp_esp8266.c这个程序中,下面这一行代码中   ={0}   是什么含义?
struct  STRUCT_USARTx_Fram strEsp8266_Fram_Record = { 0 };

下面的结构体声明中中__IO u16 FramFinishFlag   :1;  这句代码是什么含义(冒号后面写1)?
//结构体声明代码
extern struct  STRUCT_USARTx_Fram                                  //串口数据帧的处理结构体
{
        char  Data_RX_BUF [ RX_BUF_MAX_LEN ];
       
  union {
    __IO u16 InfAll;
    struct {
                  __IO u16 FramLength       :15;                               // 14:0
                  __IO u16 FramFinishFlag   :1;                                // 15
          } InfBit;
  };
       
} strEsp8266_Fram_Record;


Q3:在中断服务函数中,有下面一行代码,当读数据寄存器非空的时候,把寄存器中的数据给ucCh,后一条语句中之后又把ucCh赋值给谁呢?
        if ( USART_GetITStatus ( macESP8266_USARTx, USART_IT_RXNE ) != RESET )
        {
                ucCh  = USART_ReceiveData( macESP8266_USARTx );
               
                if ( strEsp8266_Fram_Record .InfBit .FramLength < ( RX_BUF_MAX_LEN - 1 ) )                       //预留1个字节写结束符
                        strEsp8266_Fram_Record .Data_RX_BUF [ strEsp8266_Fram_Record .InfBit .FramLength ++ ]  = ucCh;

        }



最佳答案

查看完整内容

1- 优先级在这个函数里面定义:SysTick_Config,不关掉也可以,不关掉的话会产生中断,现在关掉是方便后面使用的时候打开就行 2-{0}表示初始化结构体成员都是0, :数字这个是表示位域,具体的可百度 :c语言位域 3-ucCh是一个全局变量,具体哪里使用你可以在整个工程搜索这个变量
回复

使用道具 举报

发表于 2017-7-31 14:49:01 | 显示全部楼层
1- 优先级在这个函数里面定义:SysTick_Config,不关掉也可以,不关掉的话会产生中断,现在关掉是方便后面使用的时候打开就行

2-{0}表示初始化结构体成员都是0, :数字这个是表示位域,具体的可百度 :c语言位域

3-ucCh是一个全局变量,具体哪里使用你可以在整个工程搜索这个变量
回复

使用道具 举报

 楼主| 发表于 2017-7-31 15:43:06 | 显示全部楼层
帮顶!!!老铁们帮帮忙啊!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2025-1-12 17:18 , Processed in 0.030408 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表