流程
- GitHub上下载乐鑫SDK,将SDK中的examples下的IoT_Demo复制到sdk主目录。SDK下载地址https://github.com/espressif/ESP8266_NONOS_SDK/releases
- 打开安信可IDE,点击file,import,C/C++,Existing Code as MakeFile Project,完成之后点击Next。
- 点击Browse选择下载sdk的所在位置,然后点击去掉C++,选择Cross GCC点击Finish。
- 导入sdk后选择工程,然后右键选择properties,点击C/C++ General,去掉对Use default build command的选择,并且在Build command中填入(make COMPILE=gcc BOOT=new APP=1 SPI_SPEED=40 SPI_MODE=DIO SPI_SIZE_MAP=6)在Build directory中选择需要编译工程的目录,例如IoT_Demo。然后点击Apply选择ok。
- 选择工程右键先选择Clean project清理工程,再选择build project 编译工程。
软件定时器(接口在osapi.h)
- 点击导入的SDK选择自己要编译的工程,例如IoT_Demo。选择user—user_main.c
- 调用os_timer_arm
- 调用os_timer_setfn
回调函数
void ICACHE_FLASH_ATTR
huidiao(void)
{
os_printf("hello word");
os_printf("ni hao\n");
}
参考
void ICACHE_FLASH_ATTR
user_init(void)
{
os_timer_disarm (&os_timer); //取消定时器 因为对于同⼀个 timer,os_timer_arm 或 os_timer_arm_us 不能重复调⽤,必须先os_timer_disarm。
os_timer_setfn(&os_timer,(os_timer_func_t*) huidiao,NULL); //设置回调函数
os_timer_arm(&os_timer, 1000,1);定时
}
闪烁led(调用gpio.h接口)
- os_delay_us
- 延时
void ICACHE_FLASH_ATTR
delay_ms(uint16 x)
{
for(;x>0;x--)
{
os_delay_us(1000);
}
}
- 实现led闪烁
void ICACHE_FLASH_ATTR
user_init(void)
{
PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTMS_U,FUNC_GPIO14);//选择GPIO14
GPIO_OUTPUT_SET(GPIO_ID_PIN(14), 1);//GPIO14为高
while(1)
{
system_soft_wdt_feed() ;//喂狗
GPIO_OUTPUT_SET(GPIO_ID_PIN(14), 0);//选择gpio14输出为低电平
delay_ms(50);//延时
GPIO_OUTPUT_SET(GPIO_ID_PIN(14), 1);//高电平
delay_ms(50);//延时
}
}
pwm调节电机转速
- pwm_init初始化pwm
uint32 period:PWM 周期
uint8 *duty:各路 PWM 的占空⽐ uint32 duty=0;
uint32 pwm_channel_num:PWM 通道数
uint32 (*pin_info_list)[3]: uint32 tongdao[1][3]={PERIPHS_IO_MUX_MTMS_U, FUNC_GPIO14,14};
uint32 duty=0; //占空比0
uint32 tongdao[1][3]={PERIPHS_IO_MUX_MTMS_U, FUNC_GPIO14,14}; //使用gpio14输出pwm
void ICACHE_FLASH_ATTR
user_init(void)
{
pwm_init(10,&duty,1,tongdao);
pwm_start();//pwm开始,必须调用
}
持续完善中----------