LoKeR
-
Постов
17 -
Зарегистрирован
-
Посещение
Тип контента
Профили
Форумы
Блоги
Сообщения, опубликованные LoKeR
-
-
Есть исходная прошивка устройства, там один канал в ADC_TripleMode_Interl необходимо заменить этот режим на два обычных каналов (медленных). В случай замене адреса #define CDR_ADDRESS ((uint32_t)0x40012308) в результате ничего не выдает.
Вот исходникvoid initialization_ADC(void) { GPIO_InitTypeDef GPIO_InitStructure; ADC_InitTypeDef ADC_InitStructure; ADC_CommonInitTypeDef ADC_CommonInitStructure; DMA_InitTypeDef DMA_InitStructure; ADC_StructInit(&ADC_InitStructure); ADC_CommonStructInit(&ADC_CommonInitStructure); DMA_StructInit(&DMA_InitStructure); /* Configure PB11, PB15 in pushpull mode */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11 | GPIO_Pin_15; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN; GPIO_Init(GPIOB, &GPIO_InitStructure); // ... /* Configure PB1, PB8 in output mode */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_8; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN; GPIO_Init(GPIOB, &GPIO_InitStructure); // .. #ifdef __ILX_751B GPIOB->BSRRH = GPIO_Pin_1; // Set High ROG GPIOB->BSRRH = GPIO_Pin_8; // Set High SHUT #endif #ifdef __ILX_1412S GPIOB->BSRRL = GPIO_Pin_1; // Set Low HOLD GPIOB->BSRRL = GPIO_Pin_8; // Set Low SI1 #endif /******************************************************************************/ /* ADCs interface clock and pin configuration */ /******************************************************************************/ // === DMA ===================================================================== #define CDR_ADDRESS ((uint32_t)0x40012308) /* Enable peripheral clocks */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 | RCC_APB2Periph_ADC2 | RCC_APB2Periph_ADC3, ENABLE); /* Enable peripheral clocks *************************************************/ RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA2 , ENABLE); /* Configure ADC Channel N pin as analog input *****************************/ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(GPIOA, &GPIO_InitStructure); /* DMA2 Stream0 channel0 configuration **************************************/ DMA_InitStructure.DMA_Channel = DMA_Channel_0; DMA_InitStructure.DMA_PeripheralBaseAddr = CDR_ADDRESS; DMA_InitStructure.DMA_Memory0BaseAddr = (uint32_t)&t_data_0.e.data[0]; DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralToMemory; DMA_InitStructure.DMA_BufferSize = 0; DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable; DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word; DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Word; DMA_InitStructure.DMA_Mode = DMA_Mode_Normal; DMA_InitStructure.DMA_Priority = DMA_Priority_VeryHigh; DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Disable; DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_HalfFull; DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single; DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single; DMA_Init(DMA2_Stream0, &DMA_InitStructure); NVIC_SetPriority(DMA2_Stream0_IRQn, 1); NVIC_EnableIRQ(DMA2_Stream0_IRQn); /* ADC Common configuration *************************************************/ ADC_CommonInitStructure.ADC_Mode = ADC_Mode_Independent; ADC_CommonInitStructure.ADC_TwoSamplingDelay = ADC_TwoSamplingDelay_20Cycles; ADC_CommonInitStructure.ADC_DMAAccessMode = ADC_DMAAccessMode_2; ADC_CommonInitStructure.ADC_Prescaler = ADC_Prescaler_Div8; // ADC_clk = 30 000 000 (Triple sample = 30 000 000 / 5 = 6 000 000 [Hz]) ADC_CommonInit(&ADC_CommonInitStructure); /* ADC1 regular channel N configuration ************************************/ ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b; ADC_InitStructure.ADC_ScanConvMode = DISABLE; ADC_InitStructure.ADC_ContinuousConvMode = ENABLE; #ifdef __ILX_751B ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_Rising; #endif #ifdef __ILX_1412S ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_Rising; #endif ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T1_CC2; ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; ADC_InitStructure.ADC_NbrOfConversion = 1; ADC_Init(ADC1, &ADC_InitStructure); /* ADC1 regular channel configuration */ ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1, ADC_SampleTime_3Cycles); ADC_Init(ADC2, &ADC_InitStructure); /* ADC2 regular channel configuration */ ADC_RegularChannelConfig(ADC2, ADC_Channel_0, 1, ADC_SampleTime_3Cycles); ADC_Init(ADC3, &ADC_InitStructure); /* ADC3 regular channel configuration */ ADC_RegularChannelConfig(ADC3, ADC_Channel_2, 1, ADC_SampleTime_3Cycles); /* Enable ADC1 DMA */ ADC_DMACmd(ADC1, ENABLE); /* Enable DMA request after last transfer (multi-ADC mode) ******************/ ADC_MultiModeDMARequestAfterLastTransferCmd(ENABLE); /* Clear DMA2 Stream 0 flags */ DMA2->LIFCR |= (uint32_t)(DMA_FLAG_HTIF0 | DMA_FLAG_TCIF0); /* Enable DMA Stream Transfer Complete interrupt */ DMA_ITConfig(DMA2_Stream0, DMA_IT_TC, ENABLE); /******************************************************************************/ /* PWM interface clock and pin configuration */ /******************************************************************************/ #define __Timer_F_Freq 6000000 // Hz #define __Period_F_Mid ((SystemCoreClock) / __Timer_F_Freq) // 1 / Hz TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; /* GPIOB Configuration: Channel 2N as alternate function push-pull */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_PinAFConfig(GPIOB, GPIO_PinSource0, GPIO_AF_TIM1); // TIM1 Configuration ------------------CLK----------------------------------- /* TIM_1clock enable */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE); uint16_t Timer_F_period = __Period_F_Mid & ~0x01; /* Time Base configuration */ TIM_TimeBaseStructure.TIM_Period = Timer_F_period - 1; TIM_TimeBaseStructure.TIM_Prescaler = 0; TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseStructure.TIM_RepetitionCounter = 0; TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure); /* Channel 2N Configuration in TIM_OCMode_PWM mode */ TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable; TIM_OCInitStructure.TIM_Pulse = (uint16_t) (Timer_F_period >> 1); TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_High; TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Reset; TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCIdleState_Set; TIM_OC2Init(TIM1, &TIM_OCInitStructure); TIM_OC2PreloadConfig(TIM1, TIM_OCPreload_Enable); /* TIM1 Main Output Enable */ TIM_CtrlPWMOutputs(TIM1, ENABLE); }
0 -
Доброго времени суток, решил подключить sim800 к stm32f103c8 настроил usart3 и проверил через cp2102 Bridge Controller (USB to UART), обмен строками происходит, а вот место cp2102 подключаю sim800 ответ не получаю
#include "stm32f10x.h" GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; unsigned char Buffer[512]; // Буфер int a,b; void init() { RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; // Tx GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11; // Rx GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOB, &GPIO_InitStructure); USART_InitStructure.USART_BaudRate = 9600; USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_No; USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_Init(USART3, &USART_InitStructure); USART_Cmd(USART3, ENABLE); } void delay(unsigned long p) { while(p>0){p--;} } void send_Uart(USART_TypeDef* USARTx, unsigned char c) { while(USART_GetFlagStatus(USARTx, USART_FLAG_TXE)== RESET){} USART_SendData(USARTx, c); } unsigned char getch_Uart(USART_TypeDef* USARTx) { while(USART_GetFlagStatus(USARTx,USART_FLAG_RXNE) == RESET){} return USART_ReceiveData(USARTx); } // Отправка строки в USTR void send_Uart_str(USART_TypeDef* USARTx, unsigned char *s) { while (*s != 0) send_Uart(USARTx, *s++); } // читаем текстовую строку с UART, до ввода <enter>. Максимальная длина строки 512Байт void read_str_uart(USART_TypeDef* USARTx,unsigned char* s) { unsigned char temp; unsigned int index=0; while(index<512) { temp=getch_Uart(USARTx); if(temp!=13) { *s++=temp; } else { index=512; } index++; } } int main(void) { init(); send_Uart_str(USART3, "AT"); read_str_uart(USART3, Buffer); }
В 02.03.2018 в 09:05, mail_robot сказал:в конце концов окажется что RX/TX на свистке попутал
@mail_robot ничего не попутал, просто на том камне 3 usart не было не посмотрел в док, просто поменял на stm32f103c8 все норм
0 -
1 час назад, mail_robot сказал:
а как ТЫ переделывал?
Скрытый текст#include "stm32f10x.h" GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; unsigned char Buffer[512]; // Буфер int a,b; void init() { //------------------------------------------------------------ // UART //------------------------------------------------------------ RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //Configure GPIO pin GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; // Tx GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11; // Rx GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOB, &GPIO_InitStructure); // Configure UART USART_InitStructure.USART_BaudRate = 9600; USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_No; USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_Init(USART3, &USART_InitStructure); USART_Cmd(USART3, ENABLE); } void delay(unsigned long p) { while(p>0){p--;} } void send_Uart(USART_TypeDef* USARTx, unsigned char c) { while(USART_GetFlagStatus(USARTx, USART_FLAG_TXE)== RESET){} USART_SendData(USARTx, c); } unsigned char getch_Uart(USART_TypeDef* USARTx) { while(USART_GetFlagStatus(USARTx,USART_FLAG_RXNE) == RESET){} return USART_ReceiveData(USARTx); } // Отправка строки в USTR void send_Uart_str(USART_TypeDef* USARTx, unsigned char *s) { while (*s != 0) send_Uart(USARTx, *s++); } // выводим число в UART. Максимальная длина числа 6 цифр void send_int_Uart(USART_TypeDef* USARTx,long c) { unsigned long d=10000000; char temp,flag=0; if(c<0) { send_Uart(USARTx,'-'); c=-c; } do { c=c%d; d=d/10; temp=c/d; if(temp!=0) { flag=1; } if(flag==1) { send_Uart(USARTx,temp+'0'); } } while(d>1); } // Читаем число (в ASCII) с UART. Максимальной длиной в 8 знаков. // Завершение ввода по вводу любого не цифрового символа long read_int_uart(USART_TypeDef* USARTx) { unsigned char temp=0,index=0,flag=0; long value=0; temp=getch_Uart(USARTx); if(temp=='-') { flag=1; temp=getch_Uart(USARTx); index++; } do { index++; if((47<temp)&&(temp<58)) { value=value*10+temp-48; } else { index=255; } if(index<7) { temp=getch_Uart(USARTx); } }while(index<7); /* while(index<7) { value=value*10+temp; if(flag==0) { flag=2; } else { temp=getch_Uart(USARTx); } index++; if((47<temp)&&(temp<58)) { temp=temp-48; } else { index=255; } }*/ if(flag==1) { value=-value; } return value; } // читаем текстовую строку с UART, до ввода <enter>. Максимальная длина строки 512Байт void read_str_uart(USART_TypeDef* USARTx,unsigned char* s) { unsigned char temp; unsigned int index=0; while(index<512) { temp=getch_Uart(USARTx); if(temp!=13) { *s++=temp; } else { index=512; } index++; } } int main(void) { init(); while(1) { send_Uart_str(USART3,"alex-exe.ru\n"); send_Uart_str(USART3,"Enter string\n"); read_str_uart(USART3, Buffer); send_Uart_str(USART3,"Input string - "); send_Uart_str(USART3, Buffer); send_Uart(USART3,'\n'); send_Uart_str(USART3,"Enter two numbers separated by a space\n"); a=read_int_uart(USART3); b=read_int_uart(USART3); send_Uart_str(USART3,"a + b = "); send_int_Uart(USART3, a+b); send_Uart(USART3,'\n'); } }
0 -
Доброго времени суток, нашел хорошую статью Usart прием и отправка строки. Настроил на порт Usart3 перестал работать, попробовал на Usart2 перекинуть тоже не работает, как правильно переделать подскажите...
0 -
Доброго времени суток, нашел хорошую статью Usart прием и отправка строки. Настроил на порт Usart3 перестал работать, попробовал на Usart2 перекинуть тоже не работает, как правильно переделать подскажите...
0 -
через SoftwareSerial port(2, 3); // RX, TX
от первой ардуинки RX на второй ардуинку на TX
от второй ардуинки RX на первый ардуинку на TX
0 -
Доброго времени суток, писал код обмен данных между двумя ардуинкой, отправляю из одной ардуинку "9" а из другого получаю фигню
#include <SoftwareSerial.h> SoftwareSerial port(2, 3); // RX, TX int otp=9; void setup() { // put your setup code here, to run once: Serial.begin(9600); port.begin(9600); } void loop() { // put your main code here, to run repeatedly: port.println(otp); Serial.println(otp); delay(1000); }
подскажите пожалуйста, где я ошибаюсь, или не тот делаю
0 -
-
1 час назад, Aleх сказал:
И ?
Вы предлагаете нам за Вас разбираться, где Вы накосячили с единичками/ноликами в массивах ?
Или Вы тупо скопипастили, не получилось и сразу, не разобравшись, бегом на форум ?
1) а куда еще обращаться если не получается
2) с нулями и ноликами все в порядке и что бы не путаться в Excel сделал шаблон
3) нигде ничего не скопирована
0 -
Доброго времени суток, решил создать свои символы на LiquidCrystal по вертикали, нарисовал единичку показывает норм, рядом добавил пятерочку получил место 1->5 и место 5->разбитую 5 (можно на рисунке посмотреть)
#include <BigCrystal.h> #include <LiquidCrystal.h> LiquidCrystal lcd(7, 8, 9, 10, 11, 12); BigCrystal bigCrystal(&lcd); /********************edinica********************/ byte edinica1[8] = { 0b11111, 0b11111, 0b01111, 0b00111, 0b00011, 0b00001, 0b00000, 0b00000 }; byte edinica2[8] = { 0b00000, 0b00000, 0b00000, 0b00000, 0b11111, 0b11111, 0b11111, 0b11111 }; byte edinica3[8] = { 0b11111, 0b11111, 0b10000, 0b10000, 0b10000, 0b10000, 0b10000, 0b00000 }; byte edinica4[8] = { 0b00000, 0b00000, 0b00000, 0b00000, 0b11111, 0b11111, 0b11111, 0b11111 }; byte edinica5[8] = { 0b11111, 0b11111, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000 }; byte edinica6[8] = { 0b00000, 0b00000, 0b00000, 0b00000, 0b11111, 0b11111, 0b11111, 0b11111 }; byte edinica7[8] = { 0b11111, 0b11111, 0b11111, 0b11111, 0b11111, 0b11111, 0b11111, 0b00000 }; byte edinica8[8] = { 0b00000, 0b11111, 0b11111, 0b11111, 0b11111, 0b11111, 0b11111, 0b11111 }; /********************The End********************/ /******************** Pyat *********************/ byte pyat1[8] = { 0b11111, 0b11111, 0b11111, 0b11111, 0b11111, 0b11111, 0b01111, 0b00111 }; byte pyat2[8] = { 0b11111, 0b11111, 0b11111, 0b11111, 0b11111, 0b11111, 0b11111, 0b11111 }; byte pyat3[8] = { 0b11111, 0b11111, 0b11111, 0b11111, 0b11111, 0b11111, 0b11111, 0b11111 }; byte pyat4[8] = { 0b00000, 0b00001, 0b00011, 0b00011, 0b00011, 0b00011, 0b00011, 0b00011 }; byte pyat5[8] = { 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000 }; byte pyat6[8] = { 0b11111, 0b11111, 0b11111, 0b11111, 0b11111, 0b11111, 0b11111, 0b11111 }; byte pyat7[8] = { 0b11111, 0b11111, 0b11111, 0b11111, 0b11111, 0b11111, 0b11111, 0b11111 }; byte pyat8[8] = { 0b11100, 0b11110, 0b11111, 0b11111, 0b11111, 0b11111, 0b11111, 0b11111 }; /********************* The End *********************/ /**/ /**/ void setup() { bigCrystal.begin(20, 4); /********************edinica********************/ lcd.createChar(1, edinica1); lcd.createChar(2, edinica2); lcd.createChar(3, edinica3); lcd.createChar(4, edinica4); lcd.createChar(5, edinica5); lcd.createChar(6, edinica6); lcd.createChar(7, edinica7); lcd.createChar(8, edinica8); /********************The End********************/ /********************* Pyat *********************/ lcd.createChar(9, pyat1); lcd.createChar(10, pyat2); lcd.createChar(11, pyat3); lcd.createChar(12, pyat4); lcd.createChar(13, pyat5); lcd.createChar(14, pyat6); lcd.createChar(15, pyat7); lcd.createChar(16, pyat8); /********************* The End *********************/ /**/ /**/ } void loop() { /**/ lcd.setCursor(19,0); lcd.write((uint8_t)16); lcd.setCursor(19,1); lcd.write((uint8_t)15); lcd.setCursor(18,0); lcd.write((uint8_t)14); lcd.setCursor(18,1); lcd.write((uint8_t)13); lcd.setCursor(17,0); lcd.write((uint8_t)12); lcd.setCursor(17,1); lcd.write((uint8_t)11); lcd.setCursor(16,0); lcd.write((uint8_t)10); lcd.setCursor(16,1); lcd.write((uint8_t)9); /**/ /********************edinica********************/ lcd.setCursor(19,2); lcd.write((uint8_t)8); lcd.setCursor(19,3); lcd.write((uint8_t)7); lcd.setCursor(18,2); lcd.write((uint8_t)6); lcd.setCursor(18,3); lcd.write((uint8_t)5); lcd.setCursor(17,2); lcd.write((uint8_t)4); lcd.setCursor(17,3); lcd.write((uint8_t)3); lcd.setCursor(16,2); lcd.write((uint8_t)2); lcd.setCursor(16,3); lcd.write((uint8_t)1); /******************** The End ********************/ }
0 -
ну там все просто
крайне просто
можете объяснить??? а то никак не получается
0 -
Но захожу в тупик, как только надо вывести именно переменную, т.е. числовое значение.
uint8_t semer(uint32_t z) { switch(z) { case(0): return 0x30; case(1): return 0x31; case(2): return 0x32; case(3): return 0x33; case(4): return 0x34; case(5): return 0x35; case(6): return 0x36; case(7): return 0x37; case(8): return 0x38; case(9): return 0x39; } return 0x6D; } void set_led3(uint32_t n1,uint32_t n2,uint32_t n3,uint32_t n4,uint32_t n5,uint32_t n6,uint32_t n7) { MT_WH1602_SetDDRAMAddress(0x49); MT_WH1602_Delay(80); MT_WH1602_WriteData(semer(n5)); MT_WH1602_Delay(200); MT_WH1602_WriteData(semer(n4)); MT_WH1602_Delay(200); MT_WH1602_WriteData(semer(n3)); MT_WH1602_Delay(200); MT_WH1602_WriteData(0x2E); MT_WH1602_Delay(200); MT_WH1602_WriteData(semer(n2)); MT_WH1602_Delay(200); MT_WH1602_WriteData(semer(n1)); MT_WH1602_Delay(200); MT_WH1602_WriteData(0x57); MT_WH1602_Delay(200); }
попробуй этот код для своих переменных
void init_MT_WH1602() { MT_WH1602_Init(); MT_WH1602_Delay(2000); MT_WH1602_FunctionSet(1, 0, 0); MT_WH1602_Delay(4000); MT_WH1602_FunctionSet(1, 0, 0); MT_WH1602_Delay(4000); MT_WH1602_FunctionSet(1, 0, 0); MT_WH1602_Delay(4000); MT_WH1602_FunctionSet(1, 1, 1); MT_WH1602_Delay(4000); MT_WH1602_DisplayOnOff(1, 0, 0); MT_WH1602_Delay(4000); MT_WH1602_ClearDisplay(); MT_WH1602_Delay(6000); }
и еще без этого блока LCD не работает почему не знаю надо этот блок обязательно добавить
0 -
спасибо справился с заданием, Теперь следующим заданием затрудняюсь, подключил WH1602A все работает все показывает, но мне надо данные показывали последовательно друг за другом, например 1 напряжения 2 ток и т п
0 -
этот заработал
а у меня не заработало ввыводит
source\main.c(24): error: #268: declaration may not appear after executable statement in block
как можно избавиться от этой проблемы?
0 -
Инжектированную группу нельзя использовать?
а если по подробнее я в stm32 4 месяц занимаюсь
0 -
Доброго времени суток, у меня такая задача измерить данные из 1-го АЦП используя 2 канала и данные сохранять в DMA. Значения 1-го канала сохр. в одну переменную а другой в другую. Это задача для измерения напряжения и тока. Я ни как не могу собрать не могу добавить 2 канал. Подскажите пожалуйста, как можно решить эту проблему
void init_adc() // АЦП { RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2ENR_ADC1EN, ENABLE); ADC1->SMPR2 |= (ADC_SMPR2_SMP1_2 | ADC_SMPR2_SMP1_1 | ADC_SMPR2_SMP1_0); ADC1->CR2 |= ADC_CR2_JEXTSEL; ADC1->CR2 |= ADC_CR2_JEXTTRIG; ADC1->CR2 |= ADC_CR2_CONT; ADC1->CR1 |= ADC_CR1_JAUTO; ADC1->JSQR |= (1<<18); ADC1->CR2 |= ADC_CR2_ADON; ADC1->CR2 |= ADC_CR2_JSWSTART; while (!(ADC1->SR & ADC_SR_JEOC)); }
0 -
ЗДРАВСТВУЙТЕ Я СОЗДАЛ ПРОЕКТ МИГАНИЕМ СВЕТОДИОДОМ КОД ПРОЕКТА ВНИЗУ
#include <system_stm32f0xx.h>
int main(void)
{
RCC->AHBENR |= RCC_AHBENR_GPIOCEN;
GPIOC->MODER |= (GPIO_MODER_MODER8_0 | GPIO_MODER_MODER9_0) ;
}
void delay (int a)
{
volatile int i,j;
for (i=0 ; i < a ; i++)
{
j++;
}
return;
}
ПРИ КОМПИЛЯЦИИ ПРОЕКТА ВЫВОДИТ ОШИБКУ
".\output\keil_project.axf" - 29 Errors, 0 Warning(s).
Target not created
В ЧЕМ ПРОБЛЕМА КАК МОЖНО ЕГО РЕШИТЬ
0
Stm32f4 usart + внешний ацп
в STM32
Опубликовано
Добрый день, столкнулся с необычным мне ситуацией, камень stm32f407vet6 делаю обмен данными с ПК через usart. На порт С подключен внешний ацп 8 битный и usart тоже 8 битный. когда на ацп подаю 3В то usart просто вылетает не отправляет и не принимает байты, а если отправлю просто рандомные числа то все ок работает, как ацп подключаю все зависает
uint8_t byte; int main(void) { HAL_Init(); MX_GPIO_Init(); MX_USART2_UART_Init(); MX_TIM2_Init(); MX_TIM3_Init(); MX_TIM4_Init(); MX_TIM5_Init(); __HAL_UART_ENABLE_IT(&huart2, UART_IT_RXNE); __HAL_UART_ENABLE_IT(&huart2, UART_IT_TC); while (1) { if(data[0] == 0x31){ HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1); HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1); HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_1); HAL_TIM_PWM_Start(&htim5, TIM_CHANNEL_2); TIM2->CCR1 = 7; TIM3->CCR1 = 7; byte = (GPIOC->IDR)/4 ; for(int i = 0; i < 4096; i++){ if((i % 2) == 0){ buffer1[i]= '.'; }else{ buffer1[i] = GPIOC->IDR / 4; } } HAL_TIM_PWM_Stop(&htim2, TIM_CHANNEL_1); HAL_TIM_PWM_Stop(&htim3, TIM_CHANNEL_1); HAL_TIM_PWM_Stop(&htim4, TIM_CHANNEL_1); HAL_TIM_PWM_Stop(&htim5, TIM_CHANNEL_2); memset(data,0,1); HAL_UART_Transmit_IT(&huart2, buffer1, 4096); } } }