int main (void) { SystemInit(); pwm_init(PWM_CH0); pwm_io_config(); //P2.7 will output pwm wave with period for 1000us and pulse for 400us pwm_config(PWM_CH0, PWM_PSCAL_DIV, PWM_COUNT_US(1000, PWM_PSCAL_DIV), PWM_COUNT_US(400, PWM_PSCAL_DIV)); pwm_enable(PWM_CH0, MASK_ENABLE); pwm_config(PWM_CH0, PWM_PSCAL_DIV, PWM_COUNT_US(1000, PWM_PSCAL_DIV), PWM_COUNT_US(800, PWM_PSCAL_DIV)); pwm_config(PWM_CH0, PWM_PSCAL_DIV, PWM_COUNT_US(1000, PWM_PSCAL_DIV), PWM_COUNT_US(1000, PWM_PSCAL_DIV)); pwm_config(PWM_CH0, PWM_PSCAL_DIV, PWM_COUNT_US(1000, PWM_PSCAL_DIV), PWM_COUNT_US(0, PWM_PSCAL_DIV)); pwm_config(PWM_CH0, PWM_PSCAL_DIV, PWM_COUNT_US(1000, PWM_PSCAL_DIV), PWM_COUNT_US(400, PWM_PSCAL_DIV)); pwm_config(PWM_CH0, PWM_PSCAL_DIV, PWM_COUNT_US(1000, PWM_PSCAL_DIV), PWM_COUNT_US(800, PWM_PSCAL_DIV)); pwm_config(PWM_CH0, PWM_PSCAL_DIV, PWM_COUNT_US(1000, PWM_PSCAL_DIV), PWM_COUNT_US(1000, PWM_PSCAL_DIV)); pwm_config(PWM_CH0, PWM_PSCAL_DIV, PWM_COUNT_US(1000, PWM_PSCAL_DIV), PWM_COUNT_US(0, PWM_PSCAL_DIV)); pwm_config(PWM_CH0, PWM_PSCAL_DIV, PWM_COUNT_US(1000, PWM_PSCAL_DIV), PWM_COUNT_US(800, PWM_PSCAL_DIV)); pwm_enable(PWM_CH0, MASK_DISABLE); pwm_io_dis_config(); pwm_init(PWM_CH1); pwm_io_config(); //P2.6 will output pwm wave with period for 1500us and pulse for 1000us pwm_config(PWM_CH1, 119, PWM_COUNT_US(1500, 119), PWM_COUNT_US(1000, 119)); pwm_enable(PWM_CH1, MASK_ENABLE); pwm_io_dis_config(); while (1) /* Loop forever */ { } }
/* **************************************************************************************** * @brief ble_pwm * @param[in] pcCommandString ÃüÁîºÍ²ÎÊý´æ·ÅµØÖ· * @param[in] pcWriteBuffer дÈë´ËÊý×éµÄÃüÁ±»·¢Ë͵½´®¿Ú * @param[in] commpare_length ÃüÁîËùÕ¼³¤¶È * @response None * @return * @description ÆôÓûòÕ߹رÕPWM£¬ÃüÁî¸ñʽ£ºAT_PWM= *****************************************************************************************/ int ble_pwm( const uint8_t * const pcCommandString,uint8_t* pcWriteBuffer,uint32_t commpare_length) { //È¡²ÎÓÃÖ¸ÕëºÍ³¤¶ÈÉùÃ÷ const int8_t *pcom; uint32_t pxParameterStringLength; //PWM²ÎÊý enum PWM_CH ch; uint16_t pscal; uint16_t periodcount; uint16_t pulsecount; uint8_t parm_num = at_get_parameters_numbers((const uint8_t*)pcCommandString + commpare_length + 2); //Èç¹ûÃüÁîÖÐЯ´ø²ÎÊý if(pcCommandString[commpare_length+1] == '=') { //Èç¹ûЯ´ø4¸ö²ÎÊý,ÔòÒÀ´ÎΪͨµÀÑ¡Ôñ¡¢·ÖƵϵÊý¡¢ÖÜÆÚºÍÕ¼¿Õ±È if(parm_num == 4) { // pwm_ch? pcom = at_get_parameter((const int8_t*)pcCommandString + commpare_length + 2, 0, &pxParameterStringLength); if(pxParameterStringLength == 1 ) { if(pcom[0] == '0') { ch = PWM_CH0; } else if(pcom[0] == '1') { ch = PWM_CH1; }else { goto pram_err; } } else { goto pram_err; } pcom = at_get_parameter((const int8_t*)pcCommandString + commpare_length + 2, 1, &pxParameterStringLength); if(pxParameterStringLength > 0) { pscal = at_HEXstringToNum((const uint8_t *)pcom, pxParameterStringLength); if(pscal > 0x3FF) { goto pram_err; } } else { goto pram_err; } pcom = at_get_parameter((const int8_t*)pcCommandString + commpare_length + 2, 2, &pxParameterStringLength); if(pxParameterStringLength > 0) { periodcount = at_HEXstringToNum((const uint8_t *)pcom, pxParameterStringLength); if(periodcount > 0xFF) { goto pram_err; } } else { goto pram_err; } pcom = at_get_parameter((const int8_t*)pcCommandString + commpare_length + 2, 3, &pxParameterStringLength); if(pxParameterStringLength > 0) { pulsecount = at_HEXstringToNum((const uint8_t *)pcom, pxParameterStringLength); if(pulsecount > 0xFF) { goto pram_err; } } else { goto pram_err; } //Parameters without error pwm_init(ch); pwm_io_config(ch); pwm_config(ch, pscal, periodcount,pulsecount); pwm_enable(ch, MASK_ENABLE); } //Èç¹ûÖ»ÓÐÒ»¸ö²ÎÊý£¬ÄǾʹú±íָʾ¹Ø±ÕÄÄÒ»¸öͨµÀ else if(parm_num == 1) { if(pcCommandString[commpare_length + 2] == '0') { pwm_enable(PWM_CH0, MASK_DISABLE); } else if((pcCommandString[commpare_length + 2] == '1')) { pwm_enable(PWM_CH1, MASK_DISABLE); } else { goto pram_err; } } else { goto pram_err; } } else { goto pram_err; } return sprintf((char*)pcWriteBuffer,"OK\r\n"); pram_err: return sprintf((char*)pcWriteBuffer,"ERR\r\n"); }