Sunday, January 28, 2024
NanoCAD is Free CAD program like AutoCAD
Saturday, January 27, 2024
HardFault (error ) on STM32 USB Host + FreeRTOS
I have Hard fault when USB device Attached to my STM32F407.
STM32CubeMX makes rtos STACK SIZE default to 128 bytes.
It is too small.
You can increase stack size.
Filename : USB_HOST/Target/usbh_config.h
Original (ERROR case)
#if (USBH_USE_OS == 1)
#include "cmsis_os.h"
#define USBH_PROCESS_PRIO osPriorityNormal
#define USBH_PROCESS_STACK_SIZE ((uint16_t)128)
#endif /* (USBH_USE_OS == 1) */
Fix (ERROR case)
#if (USBH_USE_OS == 1)
#include "cmsis_os.h"
#define USBH_PROCESS_PRIO osPriorityNormal
#define USBH_PROCESS_STACK_SIZE ((uint16_t)2048)
#endif /* (USBH_USE_OS == 1) */
Sunday, October 29, 2023
Kirisun DP405 DMR Radio Walkie walkie programming cable pinout
Kirisun DP-405
Kirisun DP405
Programming cable pinout:
I tested cable with FTDI usb serial TTL module.
It works.
Wednesday, October 25, 2023
VirtualBox vboxuser password is "changeme"
Oracle VirtualBox windows 10 default password is "changeme"
Monday, August 28, 2023
simplify C# null check . if(~ !=null) { } is ~? syntax.
if( X != null)
{
X.doSomething();
}
make simple like this
X?.doSomething();
Wednesday, June 14, 2023
ESP32 Clear(disable) esp_deep_sleep_enable_gpio_wakeup
Wednesday, April 26, 2023
Get serial pin event and status(level) c#(ring, cts, dsr, rlsd)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO.Ports;
using System.Reflection;
using System.Runtime.InteropServices;
using Microsoft.Win32.SafeHandles;
namespace SerialEventMonitor
{
class Program
{
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
static extern Boolean GetCommModemStatus(SafeFileHandle hFile, ref UInt32 Status);
const UInt32 MS_CTS_ON = 0x0010;
const UInt32 MS_DSR_ON = 0x0020;
const UInt32 MS_RING_ON = 0x0040;
const UInt32 MS_RLSD_ON = 0x0080;
static void Main(string[] args)
{
Console.WriteLine( string.Join( ",",SerialPort.GetPortNames()));
string com_port_name = Console.ReadLine();
SerialPort port = new SerialPort(com_port_name.Trim(), 9600, Parity.None, 8, StopBits.One);
port.PinChanged += PinChanged;
port.Open();
DateTime dt_Start = DateTime.MinValue;
while(true)
{
if( port.ReadExisting() == "q")
break;
System.Threading.Thread.Sleep(1000);
}
port.Close();
port.Dispose();
}
private static void PinChanged(object sender, SerialPinChangedEventArgs e)
{
SerialPort port = sender as SerialPort;
Console.WriteLine( e.EventType.ToString());
ShowPinStates(port);
}
static private void ShowPinStates(System.IO.Ports.SerialPort serialPort)
{
UInt32 Status = 0;
Boolean CTS = false;
Boolean DSR = false;
Boolean DCD = false;
Boolean RI = false;
if (serialPort == null) return;
if (serialPort.IsOpen)
{
object baseStream = serialPort.BaseStream;
Type baseStreamType = baseStream.GetType();
// Get the Win32 file handle for the port
SafeFileHandle portFileHandle = (SafeFileHandle)baseStreamType.GetField("_handle", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(baseStream);
if (GetCommModemStatus(portFileHandle, ref Status))
{
CTS = ((Status & MS_CTS_ON) == MS_CTS_ON);
DSR = ((Status & MS_DSR_ON) == MS_DSR_ON);
DCD = ((Status & MS_RLSD_ON) == MS_RLSD_ON);
RI = ((Status & MS_RING_ON) == MS_RING_ON);
Console.WriteLine(RI);
}
}
}
}
}