Swimming Pool

发布时间 2023-05-31 09:11:56作者: Аᴅᴏʀᴇ
 1 //1、init
 2 //①clock②usart③gpio④time⑤SH3001⑥ADC⑦PWM
 3 //2、Rx(判断帧头和CRC、读Datas、ACK应答)
 4 //3、WokeStatus(判断是否开机、判断怎样的工作模式、判断电池电量、
 5 //4、get ADC(电机状态、入水检测、电池)
 6 //5、
 7 
 8 
 9 
10 //vWorking:电量5%~99% 蓝灯常亮;电量<10% 红灯常亮

模拟串口:

//位延时,【波特率】
uint32_t baud_rate_delay = 9600;
static void io_uart_send_one_byte(char val)
{
   uint8_t data_bit;
   Tx_Pin_Low; //起始位 低电平
   Delay_us(baud_rate_delay);// 1bit 延时
   for(data_bit = 0;data_bit <8;data_bit++)
   {
       if(val & 0x01)
             Tx_Pin_High; // 位 1
       else
             Tx_Pin_Low; //位  0
       Delay_us(buad_rate_delay);
       val >>= 1;
   }  
   Tx_Pin_High; //起始位 高电平
   Delay_us(buad_rate_delay);
}
//io模拟串口 发送多个字节函数
void io_to_uart_send(unsigned char *buf,unsigned char len)
{
for(uint8_t i=0;i<len;i++)
{
io_uart_send_one_byte(buf[i]) }
}
//io模拟串口 tx 引脚初始化
void io_to_uart_pin_init(void)
{
gpio_init_type gpio_init_struct;
crm_periph_clock_enable(CRM_GPIOA_PERIPH_CLOCK,TRUE); //启动TX引脚时钟GPIOA
gpio_default_para_init(&gpio_init_struct); //设置默认参数
//配置PA7为推挽输出
gpio_init_struct.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;
gpio_init_struct.gpio_out_type = GPIO_MODE_OUTPUT;
gpio_init_struct.gpio_pins = GPIO_PINS_7;
gpio_init_struct.gpio_pull = GPIO_PULL_UP;
gpio_init(GPIOA,&gpio_init_struct);
}
int main(void)
{
uint8_t tmp_buf[10] = {0,1,2,3,4,5,6,7,8,9};
system_clock_config(); //配置系统时序
at32_board_init();
io_to_uart_pin_init();
while(1)
{
io_to_uart_send(tmp_buf,10);
delay_ms(500);
}
}

相关文章:

 (12条消息) AT32/STM32使用IO口模拟串口发送_at32串口通信_增康的博客-CSDN博客

(12条消息) 模拟串口UART的实现_uart read 16字节_瞅瞅水的博客-CSDN博客

工厂模式相关说明

  •  长按开关机键40s,进入工厂模式,该模式下回自动依次开所有外设(灯、蜂鸣器、电机);
  • 两个电机同时开,占空比由0%~100%~0%,占空比变化频率自己定义;
  • 蜂鸣器持续滴滴鸣叫,间隔时间自己定义;
  • RGB灯:红灯占空比0%~100%~0%,然后是绿灯0%~100%~0%,再是蓝灯0%~100~0%,一直循环,占空比变化频率自己定义

ADC数模转换

  1. 电压输入范围为3.3V
  2. 分辨率为12位
  3. 最小精度为3.3/2^12
  4. 设数字量为x,则有模拟量Y=(3.3/2^12)*x

 

长按40s 
PWR_KEY_OVERLENGTH_PRESS_TIME

 

相关文章:

(11条消息) STM32-ADC(独立模式、双重模式)+DMA读取数据+部分基础知识_32adc工作模式_永栀哇的博客-CSDN博客